ReentrantLock + Condition 是给用户更加精确的线程控制的
ReentrantLock表示可从入锁
Condition 表示条件变量
synchronized是没一个对象内部已经定义好的一个关键,在每一个对象内部都有一个锁,如果一个方法使用了 synchronized关键字,那么对象将保护整个方法他和:
public void fun(){
try{
lock.lock();
......
} finally{
lock.unlock();
}
}
和
public synchronized fun(){
.....
}
是一样的效果
其中通知效果:
public synchronized void fun(){
while(...);
wait();
notifyAll();
}
其中 wait == condition.await();
notifyAll = condition.signalALl();