线程的通讯

Posted bbbbbbbb1og

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的通讯相关的知识,希望对你有一定的参考价值。

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

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

















以上是关于线程的通讯的主要内容,如果未能解决你的问题,请参考以下文章

Java_多线程通讯

java-- 多线程之间实现通讯

线程间通讯

(进程管理)04.进程和线程的通讯方式

线程通讯

多线程之间通讯