买卖包子案例——等待唤醒机制 随笔 第1张

其中,多个线程必须使用的是同一个锁对象;

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

等待 wait 和唤醒 notify 的也就是这个对象监视器及锁对象的正在等待的单个线程,若多个,谁等的时间长唤醒谁;

代码实现:

从顾客消费者来买包子开始:

买卖包子案例——等待唤醒机制 随笔 第2张

 

使用的是线程类Thread类的匿名内部类的匿名对象方式创建线程;

同步代码块的方式实现线程同步即解决线程安全问题;

买卖包子案例——等待唤醒机制 随笔 第3张

 此时,消费者线程类从waiting状态被唤醒,

添加下消费者顾客被唤醒后的操作:

买卖包子案例——等待唤醒机制 随笔 第4张

 

整个程序运行结果:

买卖包子案例——等待唤醒机制 随笔 第5张

整个代码写在主线程即main线程(main方法中),当然可以运行;

 

添加while( true ) 之后,无限循环:

买卖包子案例——等待唤醒机制 随笔 第6张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄