码迷,mamicode.com
首页 > 编程语言 > 详细

线程的通讯

时间:2018-10-06 15:33:42      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:个数   唤醒   object类   必须   共享   思路   read   传递   存在   

线程的通讯(生产者和消费者)

? 生产者和消费者模式的思路:
  A:生产者 先看是否有数据,有就等待;没有就生产,生产完以后通知消费者来消费数据
  B:消费者 先看是否有数据,有就消费;没有就等待,通知生产者生产数据
? 线程的通讯需要注意的地方:
  生产者和消费者表示不同的线程
  1.生产者和消费者操作的必须是同一个数据
    实现: 在外界把这个数据创建出来,通过构造方法传递给其他的类。
  2.由于生产者和消费者操作了同一个数据,因此会出现线程安全问题,我们需要将操作共享数据的多条语句加锁
    实现:生产者和消费者都需要加锁,而且生产者和消费者加的锁必须是同一把
  3.生产者和消费者必须存在有 生产后立即消费 的关系
    实现:通过Java提供的等待唤醒机制解决( wait() 和 notify()、notifyAll())
? wait和notify方法要注意的事项:
  1.wait方法与notify方法是属于object对象的
  2.wait方法与notify方法必须要在同步代码块或者是同步函数中才能使用
  3.wait方法与notify方法必须要由锁对象调用
? 为什么这些方法定义在Object类中而不定义在Thread类中 ?
  这些方法的调用必须通过锁对象调用,由于锁对象可以是任意对象,所以这些方法必须定义在Object类中。

线程的通讯

标签:个数   唤醒   object类   必须   共享   思路   read   传递   存在   

原文地址:https://www.cnblogs.com/bbbbbbbb1og/p/9747359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!