线程的一些基本操作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 比较保险

 

转载于:https://www.cnblogs.com/liaomin416100569/archive/2010/01/18/9331992.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值