1、
package multiThread.art;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ConditionUseCase {
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
public void conditionWait() throws InterruptedException {
lock.lock();
try {
/**
* 调用 await() 方法后,当前线程会释放锁并在此等待
*/
condition.await();
}finally {
lock.unlock();
}
}
public void conditionSignal() throws InterruptedException{
lock.lock();
try {
/**
* 调用 signal() 方法, 通知当前线程后,当前线程才从 await() 方法返回
* 并在返回前已经获取了锁
*/
condition.signal();
}finally {
lock.unlock();
}
}
}