zoukankan      html  css  js  c++  java
  • notify()与notifyAll()

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

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

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

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

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

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

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

  • 相关阅读:
    SQL 拾遗
    PowerDesigner技巧
    进步
    'data.csv'
    System.Web”中不存在类型或命名空间名称script /找不到System.Web.Extensions.dll引用
    要学的技术
    Sql 表变量
    Tomcat 7.0的配置
    开发工具
    jQuery UI Dialog
  • 原文地址:https://www.cnblogs.com/oskyhg/p/7092782.html
Copyright © 2011-2022 走看看