Java语言多线程

159 阅读3分钟

一,多线程概述。

在操作系统中,线程是比进程更小的能够独立运行的基本单位。同时,它也是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()方法执行结束");
    }
}
 

最后:

为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线图。 上面都是自己整理好的!我就把资料贡献出来给有需要的人!顺便求一波关注,哈哈~各位小伙伴关注我后私信【Java】就可以免费领取哒

原文作者:ZZU小哥哥 原文链接:blog.csdn.net/zhengzhouda…