当前位置: 首页 > 工具软件 > Notify.js > 使用案例 >

notify()和 notifyAll()有什么区别

穆彬郁
2023-12-01

notify()和notifyAll()的区别?

notify():
唤醒一个处于等待状态的线程,
注意的是在调用此方法的时候,
并不能确切的唤醒某一个等待状态的线程,
而是由JVM确定唤醒哪个线程,而且不是按优先级。

notifyAll():
唤醒所有处入等待状态的线程;
并可以理解为把他们排进一个队列;
只不过只有头部的线程获得了锁,才能运行;
注意!!并不是给所有唤醒线程一个对象的锁,而是让它们竞争,
当其中一个线程运行完就开始运行下一个已经被唤醒的线程,因为锁已经转移了。
(这个时候是否运行已经不是因为等待状态,而是处于runnning队列中)

 类似资料: