线程通信的目标是使线程间能够互相发送信号。准备处理数据的线程 B 正在等待数据变为可用。否则,让等待线程进入睡眠或者非运行状态更为明智,直到它接收到它等待的信号。同时也提供了一个 notifyAll()方法来唤醒正在等待一个给定对象的所有线程。否则,会抛出 IllegalMonitorStateException 异常。这将允许其他线程也可以调用 wait()或者 notify()。不过,在某些情况下,这可能使等待线程永远在等待,不再醒来,因为线程错过了唤醒信号。在 notify 前,设置自己已经被通知过。这可能导致你的应用程序出现严重问题。为了防止假唤醒,保存信号的成员变量将在一个 while 循环里接受检查,而不是在 if 表达式里。但是,这个标志已经被第一个唤醒的线程清除了,所以其余醒来的线程将回到等待状态,直到下次信号到来。

java 多线程-线程通信实例讲解

java 多线程-线程通信实例讲解

java 多线程-线程通信实例讲解

java 多线程-线程通信实例讲解

java 多线程-线程通信实例讲解

java 多线程-线程通信实例讲解

java 多线程-线程通信实例讲解