java notify用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java notify用法
在Java中可以用`notify`和`notifyAll`来实现线程间的通信。

`notify`和`notifyAll`方法必须在`synchronized`方法或代码块中调用,`notify`方法用于通知同一对象上某一个调用`wait`方法的线程,而`notifyAll`方法通知调用`wait`方法的所有线程。

举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内容待消费(不为空)。

相应的,消费者可以通知生产者可以开始生成更多的数据,因为当它消耗掉某些数据后缓冲区不再为满。

如果某些线程在等待某些条件触发,当那些条件为真时,你可以用`notify`和`notifyAll`来通知那些等待中的线程重新开始运行。

不同之处在于,`notify`仅仅通知一个线程,并且我们不知道哪个线程会收到通知,然而`notifyAll`会通知所有等待中的线程。

换言之,如果只有一个线程在等待一个信号灯,`notify`和`notifyAll`都会通知到这个线程。

但如果多个线程在等待这个信号灯,那么`notify`只会通知到其中一个,而其它线程并不会收到任何通知,而`notifyAll`会唤醒所有等待中的线程。

相关文档
最新文档