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(); } } }
