Condition
public interface Condition {
/**
* 当前线程进入等待状态直到被通知(signalled)或中断(interrupted)
*
* 如果当前线程从该方法返回,则表明当前线程已经获取了Condition对象所对应的锁
*
* @throws InterruptedException
*/
void await() throws InterruptedException;
/**
* 与await()不同是:该方法对中断操作不敏感
*
* 如果当前线程在等待的过程中被中断,当前线程仍会继续等待,直到被通知(signalled),
* 但当前线程会保留线程的中断状态值
*
*/
void awaitUninterruptibly();
/**
* 当前线程进入等待状态,直到被通知或被中断或超时
*
* 返回值表示剩余时间,
* 如果当前线程在nanosTimeout纳秒之前被唤醒,那么返回值就是(nanosTimeout-实际耗时),
* 如果返回值是0或者负数,则表示等待已超时
*
*/
long awaitNanos(long nanosTimeout) throws InterruptedException;
/**
* 该方法等价于awaitNanos(unit.toNanos(time)) > 0
*/
boolean await(long time, TimeUnit unit) throws InterruptedException;
/**
* 当前线程进入等待状态,直到被通知或被中断或到达时间点deadline
*
* 如果在没有到达截止时间就被通知,返回true
* 如果在到了截止时间仍未被通知,返回false
*/
boolean awaitUntil(Date deadline) throws InterruptedException;
/**
* 唤醒一个等待在Condition上的线程
* 该线程从等待方法返回前必须获得与Condition相关联的锁
*/
void signal();
/**
* 唤醒所有等待在Condition上的线程
* 每个线程从等待方法返回前必须获取Condition相关联的锁
*/
void signalAll();
}Last updated