void stateDependentMethod() throws InterruptedException {

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

synchronized(lock) {

while(!conditionPredicate)

lock.wait();

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

}

}

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

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

最新文章

  1. 消息队列——RabbitMQ学习笔记
  2. 制作centos的U盘启动盘
  3. IMPORT FROM 表数据导入
  4. C#关于控件的上下左右移动
  5. 【jmeter】JMeter中返回Json数据的处理方法
  6. 学习jax-ws(一)
  7. error C2664 转换错误汇总[转]
  8. ActionBar官方教程(9)ActionBar的顶部tab模式(注意,已经被弃用)
  9. substr,substring,slice 的区别
  10. myeclipse一些快捷键 错了或者没说到补充下
  11. win10大水牛主机插入耳机没有声音
  12. 20160227.CCPP体系详解(0037天)
  13. 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览
  14. HDU - 3247 Resource Archiver (AC自动机,状压dp)
  15. Fzreo matlab
  16. Spring boot教程mybatis访问MySQL的尝试
  17. Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
  18. dos常用命令使用说明
  19. 软件团队项目第一次Sprint评价(评价人:张家军)
  20. 破损的键盘(UVa 11988)

热门文章

  1. (25)Django中操作cookie与session组件(添加cookie和删除cookie)
  2. 【牛客练习赛22 C】
  3. python-基础-文件
  4. linux----磁盘介绍
  5. vue中在页面渲染完之后获取元素(否则动态渲染的元素获取不到)
  6. 高性能kv存储之Redis、Redis Cluster、Pika:如何应对4000亿的日访问量?
  7. JDBC事务的处理-----模拟银行转账业务
  8. 开发 FastAdmin 时见识到 php opcache 厉害
  9. openstack--3--控制节点安装配置keystone
  10. Use swig + lua quick guide