示例:
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();
}
}
结果