黑马程序员技术交流社区
标题: jdk1.5新特性Lock类 [打印本页]
作者: 周发建 时间: 2016-3-22 09:42
标题: jdk1.5新特性Lock类
(一)DK1.5 新特性 Lock类将锁和监视器单独描述,封装成对象
同步代码块对锁的操作是隐式的,后期把锁封装成了对象,把隐式变成了显示动作;并且可以获取多组监视器
java.util.concurrent.locks
Condition:封装监视器的类
Lock:封装锁的类
Lock lock = new ReentrantLock(); //创建锁
final Conditon full = lock.newCondition(); //从锁上获取监视器
final Conditon empty = lock.newCondition();
lock.lock();//获取锁
try{
//需要同步的代码
}finally{
lock.unlock();//释放锁
}
//烤鸭,使用JDK1.5新特性的Lock
class RoastedDuckLock{
private boolean flag = false;
private String name;
private int num;
Lock lock = new ReentrantLock(); //创建锁
final Condition full = lock.newCondition(); //从锁上获取监视器
final Condition empty = lock.newCondition();
public void set(String name){
lock.lock(); //获取锁
try {
while(flag)
try{full.await();}catch(InterruptedException e){}
this.name = name;
num++;
System.out.println("生产者生产了第"+num+"只"+name);
flag = true;
empty.signal();
} finally {
lock.unlock();//释放锁
}
}
public void get(){
lock.lock();//获取锁
try {
while(!flag)
try{empty.await();}catch(InterruptedException e){}
System.out.println("消费者消费了第"+num+"只"+name);
flag = false;
full.signal();
} finally{
lock.unlock();//释放锁
}
}
}
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |