zoukankan      html  css  js  c++  java
  • 线程的一些基本操作wait set,wait ,notify,nofifyAll

    概念一 wait set,wait ,notify

    可以理解为一个 休息室,每一个对象都有一个wait set

    针对对象调用wait()方法 会使当前对象释放对象锁  进入wat set 

    如果wat set  里面只有一个处于等待的线程  任何地方调用notify  就会唤醒这个线程

    如果wait set 里面有很多线程  那么调用notify 会在notify中挑选一个线程唤醒 调用notifyall 则唤醒所有的线程

    唤醒了不一定会立即执行 因为如果其他线程可能持有对象锁 唤醒的线程只能等待当前线程释放对象锁后在竞争

    wait还有一个重载方法 wait(long mi);表示 调用该方法进入wait set  但是指定时间到了 自动唤醒

    若是没有锁定的线程 调用notify 等 会抛出IllegelMonitorStateException

    一般选择  notifyAll  虽然比notify处理速度慢

    但是nofify 你必须对所有线程 比较了解 才能控制

    所以一般情况下选择notifyAll 比较保险

  • 相关阅读:
    py基础之模块与包
    py装饰器,生成器,迭代器
    py函数式编程
    py基础之列表生成式
    算法基础之递归算法
    Py基础之函数
    py基础之无序列表
    py基础之数据类型及基本语法
    jsp报错问题汇总
    mysql问题汇总
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331992.html
Copyright © 2011-2022 走看看