notify()和notifyAll()的区别说明?
下文笔者讲述notify()和notifyAll()的区别说明,如下所示:
两者功能简介:
1.notify()和notifyAll():
都是Object对象用于通知处在等待该对象的线程的方法
2.void notify():
唤醒一个正在等待该对象的线程
3.void notifyAll():
唤醒所有正在等待该对象的线程
notify()和notifyAll()的最大区别在于:
notifyAll让所有原来在该对象上等待被notify的线程退出wait状态
变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争
notify:
只会选择一个wait状态线程进行通知
并使它获得该对象上的锁
但不惊动其他同样在等待被该对象notify的线程们
当第一个线程运行完毕以后释放对象上的锁,此时如果该对象没有再次使用notify语句,即便该对象已经空闲
其他wait状态等待的线程由于没有得到该对象的通知,继续处在wait状态,直到这个对象发出一个notify或notifyAll
它们等待的是被notify或notifyAll,而不是锁
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


