zoukankan      html  css  js  c++  java
  • wait和notify和wait set

    ①  wait() 与 notify/notifyAll 方法必须在同步代码块中使用

      synchronized修饰的同步代码块或方法里面调用wait() 与 notify/notifyAll()方法

    ②  wait() 与  notify/notifyAll() 区别

      当执行wait()时,线程会把持有的锁立即释放,线程加入lock的wait set 集合中,线程处于block状态,调用对应的notify或者notifyAll方法,线程处于runnable状态,竞争到锁和cpu时间就重新执行

      wait(100)  线程会把持有的锁立即释放,线程处于block状态,与wait()不同的是,当超过这个设置时间后,线程处于runnable状态,重新竞争锁和cpu时间来执行,当然也可以在线程block时,调用notify使其恢复到runnbale状态

           当执行notify/notifyAll方法时,会唤醒处于block状态的线程,直到执行完同步块后再释放锁,所以notify或者notifyAll一般写在末尾

      notify 是唤醒一个block线程,使其处于runnable状态,竞争获取到锁和CPU时间后继续执行

      notify是唤醒所有的block线程,使他们处于runnable状态,这些线程竞争获取锁和CPU时间后再继续执行

     

    转载自: https://www.cnblogs.com/hapjin/p/5492645.html#undefined

  • 相关阅读:
    【JSP】jQuery Deferred exception successed is not defined
    onclick事件传递变量参数&拼接字符串
    JQuery
    设计模式
    拖拽-原型继承案例
    继承
    原型
    闭包
    promise
    jsonp
  • 原文地址:https://www.cnblogs.com/moris5013/p/10635160.html
Copyright © 2011-2022 走看看