notify () 和 notifyAll () 的区别

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

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

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

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

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

java 的 notify 为什么会导致死锁

相关文章
|
2月前
|
Java
线程间通信之Object.wait/notify实现
线程间通信之Object.wait/notify实现
42 0
|
17天前
|
Java
wait()和notify():JAVA多线程世界的“信号兵”
【6月更文挑战第20天】在Java多线程中,`wait()`和`notify()`作为Object类的方法,扮演着线程间协调者的角色。`wait()`让线程等待并释放锁,`notify()`或`notifyAll()`唤醒等待的线程。在生产者-消费者模型中,它们用于同步访问资源,例如队列。当队列满或空时,线程调用wait()暂停,另一方完成操作后用notify()唤醒。理解并正确使用这些“信号兵”对构建高效的多线程程序至关重要。
|
2月前
|
调度
多线程之wait&notify
多线程之wait&notify
|
12月前
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
250 0
多线程之——wait/notify
多线程之——wait/notify
48 0
|
安全 Java
Java并发编程之Wait和Notify
Java并发编程之Wait和Notify
119 0
Java并发编程之Wait和Notify
Zp
wait,notify,notifyAll原理以及实际使用场景
wait,notify,notifyAll原理以及实际使用场景
Zp
178 0
|
Java
Java线程中的wait、notify和notifyAll解析
Java线程中的wait、notify和notifyAll解析
100 1
|
Java 调度 开发者
线程 - 你真的懂 wait、notify、notifyAll 吗?
线程 - 你真的懂 wait、notify、notifyAll 吗?
107 0