zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    关于EPCS的读写
    HPD的作用和应用事项
    debug命令的使用
    寄存器中cs,ds,ss,es的区别
    Oracle的物化视图
    汇编helloword代码
    SSL单双向验证原理
    中断向量表小计
    PC机的内存分配空间小记
    汇编中基本的数据类型
  • 原文地址:https://www.cnblogs.com/xieyuan/p/3787528.html
Copyright © 2011-2022 走看看