Module
java.base
Class AbstractQueuedLongSynchronizer.ConditionObject
- java.lang.Object
-
- java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject
-
- All Implemented Interfaces:
-
Serializable,Condition
- Enclosing class:
- AbstractQueuedLongSynchronizer
public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
条件实施为AbstractQueuedLongSynchronizer作为Lock实施的基础。该类的方法文档描述了从锁定和条件用户角度看的机制,而不是行为规范。 该类的导出版本一般需要附有说明依赖于相关联的
AbstractQueuedLongSynchronizer条件语义的文档。这个类是Serializable,但是所有字段都是暂时的,所以反序列化的条件没有服务器。
- 从以下版本开始:
- 1.6
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 ConditionObject()创建一个新的ConditionObject实例。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidawait()实现可中断条件等待。booleanawait(long time, TimeUnit unit)实现定时状态等待。longawaitNanos(long nanosTimeout)实现定时状态等待。voidawaitUninterruptibly()实现不间断状态等待。booleanawaitUntil(Date deadline)实现绝对定时条件等待。protected Collection<Thread>getWaitingThreads()返回一个包含可能在此条件下等待的线程的集合。protected intgetWaitQueueLength()返回等待此条件的线程数的估计。protected booleanhasWaiters()查询是否有线程正在等待这种情况。voidsignal()将最长等待的线程(如果存在)从等待队列移动到拥有锁的等待队列。voidsignalAll()将所有线程从这个条件的等待队列移动到拥有锁的等待队列。
-
-
-
方法详细信息
-
signal
public final void signal()
将最长等待的线程(如果存在)从等待队列移动到拥有锁的等待队列。- Specified by:
-
signal在接口Condition - 异常
-
IllegalMonitorStateException- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()返回false
-
signalAll
public final void signalAll()
将所有线程从这个条件的等待队列移动到拥有锁的等待队列。- Specified by:
-
signalAll在接口Condition - 异常
-
IllegalMonitorStateException- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()返回false
-
awaitUninterruptibly
public final void awaitUninterruptibly()
实现不间断状态等待。- 保存锁定状态由
AbstractQueuedLongSynchronizer.getState()返回。 - 以保存状态为参数调用
AbstractQueuedLongSynchronizer.release(long),如果失败,则抛出IllegalMonitorStateException。 - 阻止直到发信号。
- 通过调用具有保存状态的专用版本的
AbstractQueuedLongSynchronizer.acquire(long)作为参数来重新获取。
- Specified by:
-
awaitUninterruptibly在接口Condition
- 保存锁定状态由
-
await
public final void await() throws InterruptedException实现可中断条件等待。- 如果当前线程中断,则抛出InterruptedException。
- 保存锁定状态由
AbstractQueuedLongSynchronizer.getState()返回。 - 以保存状态为参数调用
AbstractQueuedLongSynchronizer.release(long),如果失败,则抛出IllegalMonitorStateException。 - 阻塞直到发信号或中断。
- 通过调用具有保存状态的
AbstractQueuedLongSynchronizer.acquire(long)的专用版本作为参数来重新获取。 - 如果在步骤4中被阻塞时中断,则抛出InterruptedException。
- Specified by:
-
await在接口Condition - 异常
-
InterruptedException- 如果当前线程中断(并且支持线程中断)
-
awaitNanos
public final long awaitNanos(long nanosTimeout) throws InterruptedException实现定时状态等待。- 如果当前线程中断,则抛出InterruptedException。
- 保存锁定状态返回
AbstractQueuedLongSynchronizer.getState()。 - 调用
AbstractQueuedLongSynchronizer.release(long),保存状态为参数,如果失败,则抛出IllegalMonitorStateException。 - 阻塞直到发信号,中断或超时。
- 通过调用具有保存状态的专用版本的
AbstractQueuedLongSynchronizer.acquire(long)作为参数来重新获取。 - 如果在步骤4中被阻塞时中断,则抛出InterruptedException。
- Specified by:
-
awaitNanos在接口Condition - 参数
-
nanosTimeout- 以纳秒为nanosTimeout的最长等待时间 - 结果
-
估计
nanosTimeout值减去等待从此方法返回的时间。 可以使用正值作为随后调用此方法的参数,以完成等待所需时间。 小于或等于零的值表示没有时间。 - 异常
-
InterruptedException- 如果当前线程被中断(并且支持线程中断的中断)
-
awaitUntil
public final boolean awaitUntil(Date deadline) throws InterruptedException
实现绝对定时条件等待。- 如果当前线程中断,则抛出InterruptedException。
- 保存锁定状态返回
AbstractQueuedLongSynchronizer.getState()。 - 调用
AbstractQueuedLongSynchronizer.release(long),保存状态为参数,如果失败,则抛出IllegalMonitorStateException。 - 阻塞直到发信号,中断或超时。
- 通过调用具有保存状态的
AbstractQueuedLongSynchronizer.acquire(long)的专用版本作为参数来重新获取。 - 如果在步骤4中被阻塞时中断,则抛出InterruptedException。
- 如果在步骤4中被阻止时超时,返回false,否则返回true。
- Specified by:
-
awaitUntil在接口Condition - 参数
-
deadline- 绝对等待的时间 - 结果
-
false如果最后期限在退货后已过,否则为true - 异常
-
InterruptedException- 如果当前线程中断(并且支持线程中断)
-
await
public final boolean await(long time, TimeUnit unit) throws InterruptedException实现定时状态等待。- 如果当前线程中断,则抛出InterruptedException。
- 保存锁定状态返回
AbstractQueuedLongSynchronizer.getState()。 - 以保存状态为参数调用
AbstractQueuedLongSynchronizer.release(long),如果失败,则抛出IllegalMonitorStateException。 - 阻塞直到发信号,中断或超时。
- 通过调用专用版本的
AbstractQueuedLongSynchronizer.acquire(long)通过保存的状态作为参数来获取。 - 如果在步骤4中被阻塞时中断,则抛出InterruptedException。
- 如果在步骤4中被阻止时超时,返回false,否则返回true。
- Specified by:
-
await在接口Condition - 参数
-
time- 等待的最长时间 -
unit-time参数的时间单位 - 结果
-
false如果等待时间可以从方法返回前经过,否则true - 异常
-
InterruptedException- 如果当前线程中断(支持线程中断)
-
hasWaiters
protected final boolean hasWaiters()
查询是否有线程正在等待这种情况。 实现AbstractQueuedLongSynchronizer.hasWaiters(ConditionObject)。- 结果
-
true如果有任何等待线程 - 异常
-
IllegalMonitorStateException- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()返回false
-
getWaitQueueLength
protected final int getWaitQueueLength()
返回等待此条件的线程数的估计。 实现AbstractQueuedLongSynchronizer.getWaitQueueLength(ConditionObject)。- 结果
- 估计等待线程数
- 异常
-
IllegalMonitorStateException- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()返回false
-
getWaitingThreads
protected final Collection<Thread> getWaitingThreads()
返回一个包含可能在此条件下等待的线程的集合。 实现AbstractQueuedLongSynchronizer.getWaitingThreads(ConditionObject)。- 结果
- 线程的收集
- 异常
-
IllegalMonitorStateException- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()返回false
-
-