Java多线程系列(6)

Wait & Notify

WN是一种同步机制,更是一种通信机制,它必须与 同步锁结合使用。因为Wait-Notify本身存在race condition。

但是这不得不让我们思考WN机制得必要性:1)wait()与sleep()在对待已获取得lock时不同,前者会在操作之前自动放弃lock;2)wait在于等待某事物得出现,等待条件没有满足当然可以等待

没有同步得WN可能得导致RC,举例如下:

1)Thread1测试条件,不满足,需要等待;

2)Thread2设定此条件

3)Thread2调用notify()

4)Thread1调用wait()等待

其结果是Thread1永远等待

另外:wait()和nitify()方法应与Lock对象保持一致。

举例:

wait():

synchronized (object){
 if (flag){
  object.wait()
 }
 else{
  ...
 }
}

notify():

synchronized (object){
 if (!flag){
  object.notify();
 }
 else{
  ...
 }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值