示例:
public class ReentrantLockConditionDemo {static ReentrantLock lock = new ReentrantLock(true);static Condition condition = lock.newCondition();public static void main(String[] args) {new Thread() {public void run() {lock.lock();System.out.println("第一个线程加锁");try {System.out.println("第一个线程释放锁并等待");condition.await();System.out.println("第一个线程重新获取锁");} catch (InterruptedException e) {e.printStackTrace();}lock.unlock();System.out.println("第一个线程释放锁");};}.start();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}new Thread() {public void run() {lock.lock();System.out.println("第二个线程加锁");System.out.println("第二个线程唤醒第一个线程");condition.signal();lock.unlock();System.out.println("第二个线程释放锁");};}.start();}}
结果
