等待唤醒机制概念和机制分析

等待唤醒机制概念

等待与唤醒机制:线程之间的通信

重点:有效的利用资源(生产一个包子,吃一个包子,再生产一个包子,在吃一个包子)

通信:对包子的状态进行判断

  没有包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态为有

  有包子-->包子铺线程唤醒吃货线程-->包子铺线程等待-->吃货吃包子-->吃完包子-->修改包子的状态为没有

  没有包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态为有

  

 

 

调用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方法,程序执行的入口,启动程序

  创建包子对象:创建包子铺线程,开启:创建吃货线程,开启

 

posted @ 2022-07-09 16:41  monkey大佬  阅读(70)  评论(0)    收藏  举报