Condition是做什么用的了?Condition是用来实现线程间通信的,说到这,可能很多人都想到了wait和notify以及notifyAll,没错,Condition的功能和他们类似,只是功能更强而已,下面我们就来学习一下线程间通过Condition来实现通信。
Condition也是jdk1.5并发包下的一个接口,原型如下:
public interface Condition {
// 相当于Object的wait方法
void await() throws InterruptedException;
void awaitUninterruptibly();
long awaitNanos(long nanosTimeout) throws InterruptedException;
// 在给定的时间,阻塞
boolean await(long time, TimeUnit unit) throws InterruptedException;
boolean awaitUntil(Date deadline) throws InterruptedException;
// 相当于Object的notify方法
void signal();
// 相当于Object的notifyAll方法
void signalAll();
}
Condition使用说明:
· Condition是个接口,基本的方法就是await()和signal()方法;
· Condition依赖于Lock接口,生成一个Condition的基本代码是lock.newCondition()
· 调用Condition的await()和signal()方法,都必须在lock保护之内,就是说必须在lock.lock