notify() :随机唤醒一个线程。

notifyAll():唤醒等待某个锁的所有任务。

在技术上,可能会有多个任务在所创建的任务上处于wait()状态,调用notifyAll()比只调用notify()更安全。

使用notify()而不是notifyAll()是一种优化。

在使用notify()时,在众多等待同一个锁的任务中只会有一个会被唤醒,如果你要使用notify(),你需要确保以下条件:

  1. 必须保证被唤醒的是恰当的任务,你所希望唤醒的任务。
  2. 所有的任务必须等待相同的条件。因为你有多个任务在等待不用的条件,那么你就不知道是否唤醒了恰当的任务。
  3. 当条件变化时,必须只有一个任务能够从中受益。
  4. 这些限制条件对所有可能存在的子类都必须总是起作用的。

如果这些规则有一个不满足,那么就必须使用notifyAll() 而不是notify().

最新文章

  1. View动画和属性动画
  2. chrome浏览器js 导出excel
  3. JVM的GC理论详解
  4. java网络编程之TCP实例
  5. 文档对象模型(DOM)
  6. 编译联想A820内核源码
  7. t持久化与集群部署开发详解
  8. List迭代过滤操作注意点
  9. Xen Server虚拟机数据恢复的方法和数据恢复过程
  10. JS刷票神器
  11. SpringBoot学习笔记(一)入门
  12. yml多环境配置
  13. 【转载】浅谈38K红外发射接受编码
  14. Ubuntu18.04安装Tensorflow
  15. MGR架构 ~ 节点的维护相关问题
  16. .NET MVC 保存Session值,6位数验证码
  17. Chapter14 糖酵解 糖异生 戊糖途径
  18. Intellij IDEA调试功能总结
  19. IIS连接数修改
  20. 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

热门文章

  1. Python3 Tkinter-Text
  2. [leetcode-718-Maximum Length of Repeated Subarray]
  3. Redis+Keepalived高可用方案详细分析
  4. Zen Coding && Emmet-Sublime 安装
  5. 让我们一起来做最漂亮的Android界面吧!
  6. 从零讲JAVA ,给你一条 清晰地学习道路!该学什么就学什么!!
  7. Java 二维数组
  8. 【beta】Scrum站立会议第1次....11.3
  9. phpcmsv9 同时调用多个栏目的文章标签
  10. C#中的unsafe