Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1670431
  • 博文数量: 695
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4027
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 21:22
文章分类

全部博文(695)

文章存档

2018年(18)

2017年(74)

2016年(170)

2015年(102)

2014年(276)

2013年(55)

分类: Java

2017-02-16 20:17:32

首先要明确的是在调用wait()和notify()的时候都要先获取锁,wait()调用后,不仅会释放cpu,同时也会释放锁,在wait返回的时候会先尝试获取锁,只有再次获得锁之后wait才会正确的返回
任意一个Java象,都有一组监视器方法(定java.lang.Object上),主要包括wait()wait(long timeout)notify()以及notifyAll()方法,些方法与synchronized同步关字配合,可以实现等待/通知模式。Condition接口也提供了Object监视器方法,与Lock配合可以实现/通知模式,但是两者在使用方式以及功能特性上是有差的。
第一种:
  Object obj = new Object();
  synchronized(obj){
   ...................
   lock.wait();
   ................
}
第二种:
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
public void conditionWait() throws InterruptedException {
lock.lock();
try {
condition.await();
} finally {
lock.unlock();
}
}


阅读(1008) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~