package com.brianway.learning.java.multithread.lock.example5;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
/**
* Created by Brian on 2016/4/15.
*/
public class Service3 {
private ReentrantLock lock = new ReentrantLock();
private Condition newCondition = lock.newCondition();
public void waitMethod() {
try {
lock.lock();
System.out.println("before await " + Thread.currentThread().getName());
newCondition.await();
System.out.println("after await " + Thread.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
public void notifyMethod() {
try {
lock.lock();
System.out.println("有" + lock.getWaitQueueLength(newCondition) + "个线程正在等待newCondition");
newCondition.signal();
} finally {
lock.unlock();
}
}
}