等待唤醒机制概念和机制分析
等待唤醒机制概念
等待与唤醒机制:线程之间的通信
重点:有效的利用资源(生产一个包子,吃一个包子,再生产一个包子,在吃一个包子)
通信:对包子的状态进行判断
没有包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态为有
有包子-->包子铺线程唤醒吃货线程-->包子铺线程等待-->吃货吃包子-->吃完包子-->修改包子的状态为没有
没有包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态为有

调用wait和notify方法需要注意的细节
1.wait方法与notify方法必须要由同一个锁对象调用。因为:对应的锁对象可以通过notify唤醒使用同一个锁对象调用的wait方法后的线程
2.wait方法与notify方法是属于Object类的方法。因为:锁对象可以使任意对象,而任意对象的所属类都是继承了Object类的
3.wait方法与notify方法必须要在同步代码或者是同步函数中使用。因为:必须要通过锁对象调用这2个方法
等待唤醒机制需求分析
分析:
资源类:包子类
设置包子的属性
皮 陷 包子的状态:有true,没有false
生产者(包子铺)类:是一个线程类,可以继承Thread
设置线程任务(run):生产包子
对包子的状态进行判断
true:有包子
包子铺调用wait方法进入等待状态
false:没有包子
包子铺生产包子
增加一些趣味性:交替生产两种包子
有两种状态(i%2==0)
包子铺生产好了包子
修改包子的状态为true有
唤醒吃货线程,让吃货线程池包子
消费者(吃货)类:是一个线程类,可以继承Thread
设置线程任务(run):吃包子
对包子的状态进行判断
false:没有包子
吃货线程调用wait方法进入等待状态
true:有包子
吃货吃包子
吃货吃完包子
修改包子的状态为false没有
吃货唤醒包子铺线程,生产包子
测试类:
包含main方法,程序执行的入口,启动程序
创建包子对象:创建包子铺线程,开启:创建吃货线程,开启

浙公网安备 33010602011771号