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

先解释两个概念。

等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池,等待池中的线程不会去竞争该对象的锁。
锁池:只有获取了对象的锁,线程才能执行对象的 synchronized 代码,对象的锁每次只有一个线程可以获得,其他线程只能在锁池中等待
区别:

notify() 方法随机唤醒对象的等待池中的一个线程,进入锁池;notifyAll() 唤醒对象的等待池中的所有线程,进入锁池。

上一篇:在什么情况下,不写notify()或者notifyAll()就能唤醒被wait()阻塞的线程?


下一篇:6、Java Object类中有哪些方法?