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,而不是锁
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。