Condition提供了一系列的方法来阻塞和唤醒线程:
- 1)
await()
:造成当前线程在接到信号或被中断之前一直处于等待状态。 - 2)
await(long time,TimeUnit unit)
:当前线程在接到信号、被中断或到达指定等待时间之前一直处于等待状态。 - 3)
awaitNanos(long nanosTimeout)
:当前线程在接到信号、被中断或到达指定等待时间之前一直处于等待状态。返回值表示剩余时间,如果在nanosTimesout之前唤醒,那么返回值 = nanosTimeout - 消耗时间,如果返回值<= 0,则可以认定它已经超时。 - 4)
awaitUninterruptibly()
:当前线程在接到信号之前一直处于等待状态。注意:该方法对中断不敏感。 - 5)
awaitUntil(Date deadline)
:当前线程在接到信号、被中断或到达指定最后期限之前一直处于等待状态。如果没有到指定时间就被通知,则返回true,否则表示到了指定时间,返回false。 - 6)
signal()
:唤醒一个等待线程。该线程从等待方法返回前必须获得与Condition相关的锁。 - 7)
signalAll()
:唤醒所有等待线程。能够从等待方法返回的线程必须获得与Condition相关的锁。