一、介绍
所谓线程通信就是线程间相互发送数据,线程间共享一个资源即可实现线程通信。
二、常见形式
-
通过共享一个数据的方式实现。
-
根据共享数据的情况决定自己该怎么做,以及通知其他线程怎么做。
三、应用场景
-
生产者与消费者模型:生产者线程负责生产数据,消费者线程负责消费生产者产生的数据。
-
要求:生产者线程生产完数据后唤醒消费者,然后等待自己,消费者消费完该数据后唤醒生产者,然后等待自己。
-
线程通信的前提:线程通信通常是在多个线程操作同一个共享资源的时候需要进行通信,且要保证线程安全。
四、方法
方法名称 | 说明 |
---|---|
void wait() | 让当前线程等待并释放所占锁,直到另一个线程调用notify()方法或 notifyAll()方法 |
void notify() | 唤醒正在等待的单个线程 |
void notifyAll() | 唤醒正在等待的所有线程 |
注意
- 上述方法应该使用当前同步锁对象进行调用。