Java语言多线程

一,多线程概述。

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

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值