《Java并发编程实战》笔记-状态依赖方法的标准形式

void stateDependentMethod() throws InterruptedException {

      //必须通过一个锁来保护条件谓词

     synchronized(lock) {

           while(!conditionPredicate)

               lock.wait();

           //现在对象处于合适的状态

     }

}

当使用条件等待时(例如Object.wait或Condiotion.await):

  • 通常都有一个条件谓词——包括一些对象状态的测试,线程在执行前必须首先通过这些测试。
  • 在调用wait之前测试条件谓词,并且从wait中返回时再次进行测试。
  • 在一个循环中调用wait。
  • 确保使用与条件队列相关的锁来保护构成条件谓词的各个状态变量。
  • 当调用twait、notify或notifyAll等方法时,一定要持有与条件队列相关的锁。
  • 在检查条件谓词之后以及开始执行相应的操作之前,不要释放锁。

 

posted on 2017-03-17 14:34  力奋  阅读(139)  评论(0编辑  收藏  举报