android wait notify实现线程挂起与恢复

synchronized(this)
{
   try {
       dThread.wait(); // 暂停线程
   }catch(InterruptedException e) {
       e.printStackTrace();
   }
}
synchronized(this),会获得this的对象锁,dThread.wait()会让该调用线程wait在dThread对象的等待池中,然后该线程会释放dThread锁,由于线程没有dThread对象锁,所以会报IllegalMonitorStateException。同样的道理适合notify(),notifyAll().
所以可以这样写:
synchronized(dThread)
{
   try {
       dThread.wait(); // 暂停线程
   }catch(InterruptedException e) {
       e.printStackTrace();
   }
}
synchronized(dThread)
{
       dThread.notify(); // 恢复线程
}


wait的目的就在于暴露出对象锁,让其他线程可以通过对象的notify叫醒等待在该对象的等该池里的线程。同样notify也会释放对象锁,在调用之前必须获得对象的锁,不然也会报异常。

\

wd_ybyq 发表于 http://bbs.csdn.net/topics/350162289

转载于:https://www.cnblogs.com/xieyuan/archive/2013/06/05/3787528.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值