线程间通信——等待唤醒机制及买卖包子案例

线程间通信——等待唤醒机制,避免争夺同一资源;

 锁对象可以是任意Object类的子类对象;

包子案例:

包子案例——生产者和消费者:

代码实现:

关键就是在于两个线程使用同一个锁对象! 这边是主程序调用这两个线程时候传入的同一个对象!

包子铺线程类——生产者:

 

其中,baozi类作为成员变量,并且重载了带参的构造方法;

锁对象为调用包子铺带参的构造方法传入的这个包子变量bz;

调用点wait方法必须是锁对象调用,锁对象调用wait方法之后当前线程就进入等待状态,另外一个线程此时应该是正在执行;

 锁对象调用notify方法之后,唤醒另外一个线程,自己则进入等待状态;

模2则有两种情况;

吃货线程类——消费者:

前面和另外一个线程生产者一样,需要包子类作为成员变量,传入有参构造方法;

关键在于生产者和消费者两个的锁对象是同个对象;使用的同步代码块方式实现线程同步;

主程序代码:

其中,创建了包子对象之后,开启包子铺生产者和吃货消费者这两个线程,使用的匿名对象,调用有参构造方法,入参都是创建的包子对象;

运行结果:

两种包子一直在生产和被消费;

转载于:https://www.cnblogs.com/wmqiang/p/10666181.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值