Java语言多线程

Wenda ·
更新时间:2024-11-13
· 896 次阅读

一,多线程概述。

  在操作系统中,线程是比进程更小的能够独立运行的基本单位。同时,它也是CPU调度的基本单位。线程本身基本上不拥有系统资源,只是拥有一些在运行时需要用到的系统资源,例如程序计数器,寄存器和栈等。一个进程中的所有线程可以共享进程中的所有资源。

并发的目的是提供系统效率,简化程序设计。多线程是实现并发的一种有效手段。一个进程可以通过运行多个线程来并发地执行多项任务。Java语言的重要特征是在语言级支持多线程的程序设计。

二,多线程的生命周期。

三,创建线程的四种方式

1.继承Thread类。如下图所示。

2.实现Runnable接口。如下图所示。

 

3.使用Callable和Future创建线程。如下图所示。

 

4.使用Executor创建线程池。如下图所示。

四,三个售票窗口同时出售10张票的Demo。

程序分析:
    (1)票数要使用同一个静态值
    (2)为保证不会出现卖出同一个票数,要java多线程同步锁。
设计思路:
    (1)创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!
    (2)创建主方法调用类

public class Station extends Thread {     //通过构造方法给线程名字赋值     public Station(String name) {         super(name);     }     //为了保持票数的一致,票数要静态     static int tick = 10;     //创建一个静态钥匙     static Object object = "xujie";     //重写run防范,实现买票的操作     @Override     public void run() {         while (true){             synchronized (object){ //这个很重要,必须使用一个锁                 //进去的人会把钥匙拿在手上,出来后才把钥匙让出来                 if (tick>0){                     System.out.println(Thread.currentThread().getName()+"  卖出了第  "+tick+"  张票");                     tick--;                 }else{                     break;                 }             }             try {                 Thread.sleep(1000);//当前线程休眠1秒             } catch (InterruptedException e) {                 e.printStackTrace();             }         }         System.out.println(Thread.currentThread().getName()+" 线程的run()方法执行结束");     } }

 

 


作者:ZZU小哥哥



多线程 线程 java语言 JAVA

需要 登录 后方可回复, 如果你还没有账号请 注册新账号