notify()与notifyAll()
2024-08-28 10:46:37
notify() :随机唤醒一个线程。
notifyAll():唤醒等待某个锁的所有任务。
在技术上,可能会有多个任务在所创建的任务上处于wait()状态,调用notifyAll()比只调用notify()更安全。
使用notify()而不是notifyAll()是一种优化。
在使用notify()时,在众多等待同一个锁的任务中只会有一个会被唤醒,如果你要使用notify(),你需要确保以下条件:
- 必须保证被唤醒的是恰当的任务,你所希望唤醒的任务。
- 所有的任务必须等待相同的条件。因为你有多个任务在等待不用的条件,那么你就不知道是否唤醒了恰当的任务。
- 当条件变化时,必须只有一个任务能够从中受益。
- 这些限制条件对所有可能存在的子类都必须总是起作用的。
如果这些规则有一个不满足,那么就必须使用notifyAll() 而不是notify().
最新文章
- View动画和属性动画
- chrome浏览器js 导出excel
- JVM的GC理论详解
- java网络编程之TCP实例
- 文档对象模型(DOM)
- 编译联想A820内核源码
- t持久化与集群部署开发详解
- List迭代过滤操作注意点
- Xen Server虚拟机数据恢复的方法和数据恢复过程
- JS刷票神器
- SpringBoot学习笔记(一)入门
- yml多环境配置
- 【转载】浅谈38K红外发射接受编码
- Ubuntu18.04安装Tensorflow
- MGR架构 ~ 节点的维护相关问题
- .NET MVC 保存Session值,6位数验证码
- Chapter14 糖酵解 糖异生 戊糖途径
- Intellij IDEA调试功能总结
- IIS连接数修改
- Deployment failure on Tomcat 6.x. Could not copy all resources to D:\...\webapps\eptInfo. If a file is locked, you can wait until the lock times out to redeploy, or stop the server and redeploy, or ma
热门文章
- Python3 Tkinter-Text
- [leetcode-718-Maximum Length of Repeated Subarray]
- Redis+Keepalived高可用方案详细分析
- Zen Coding &;&; Emmet-Sublime 安装
- 让我们一起来做最漂亮的Android界面吧!
- 从零讲JAVA ,给你一条 清晰地学习道路!该学什么就学什么!!
- Java 二维数组
- 【beta】Scrum站立会议第1次....11.3
- phpcmsv9 同时调用多个栏目的文章标签
- C#中的unsafe