notify () 和 notifyAll () 的区别

简介: notify () 和 notifyAll () 的区别

1.notify()只会随机选取一个处于等待池中的线程进入锁池去竞争获取锁的机会,也就是只能唤醒一个线程;

而 notifyAll()可以唤醒所有线程让所有处于等待池的线程重新进入锁的争夺队列中。

2. 使用 notify()可能会导致死锁,因为 notify()一次只能唤醒一个线程,而且是随机的,不能保证唤醒哪一个线程,并且任何时候只有一个线程可以获得锁,也就是说只有一个线程可以运行 synchronize 中的代码,所以可能岁导致其他线程一直没有被唤醒的情况,从而造成死锁。而 notifyAll()不会造成死锁情况。

蛋糕故事帮助理解 notify()可能会导致死锁情况

java 的 notify 为什么会导致死锁

相关文章
|
5月前
|
Java
线程间通信之Object.wait/notify实现
线程间通信之Object.wait/notify实现
33 0
|
5月前
|
调度
多线程之wait&notify
多线程之wait&notify
|
10月前
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
157 0
|
11月前
多线程之——wait/notify
多线程之——wait/notify
44 0
Zp
wait,notify,notifyAll原理以及实际使用场景
wait,notify,notifyAll原理以及实际使用场景
Zp
172 0
|
Java
Java线程中的wait、notify和notifyAll解析
Java线程中的wait、notify和notifyAll解析
95 1
|
Java 调度 开发者
线程 - 你真的懂 wait、notify、notifyAll 吗?
线程 - 你真的懂 wait、notify、notifyAll 吗?
100 0