|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util.concurrent.locks
类 AbstractQueuedSynchronizer.ConditionObject
java.lang.Object java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject
- 所有已实现的接口:
- Serializable, Condition
- 正在封闭类:
- AbstractQueuedSynchronizer
-
public class AbstractQueuedSynchronizer.ConditionObject
- extends Object
- implements Condition, Serializable
AbstractQueuedSynchronizer
的 Condition 实现是 Lock
实现的基础。
此类的方法文档描述了一些机制,但没有从 Lock 和 Condition 用户的角度描述行为规范。此类的发行版本通常必须和描述 condition 语义的文档一起提供,这些语义依赖于相关 AbstractQueuedSynchronizer 的那些语义。
此类是可序列化的,但所有字段都是瞬态的,所以已序列化的条件没有等待者。
- 另请参见:
- 序列化表格
构造方法摘要 | |
---|---|
AbstractQueuedSynchronizer.ConditionObject() 创建一个新的 ConditionObject 实例。 |
方法摘要 | |
---|---|
void |
await() 实现不可中断的条件等待。 |
boolean |
await(long time, TimeUnit unit) 实现定时的条件等待。 |
long |
awaitNanos(long nanosTimeout) 实现定时的条件等待。 |
void |
awaitUninterruptibly() 实现不可中断的条件等待。 |
boolean |
awaitUntil(Date deadline) 实现绝对定时条件等待。 |
protected Collection<Thread> |
getWaitingThreads() 返回包含那些可能正在等待此条件的线程 collection。 |
protected int |
getWaitQueueLength() 返回正在等待此条件的线程数估计值。 |
protected boolean |
hasWaiters() 查询是否有正在等待此条件的任何线程。 |
void |
signal() 将等待时间最长的线程(如果存在)从此条件的等待队列中移动到拥有锁定的等待队列。 |
void |
signalAll() 将所有线程从此条件的等待队列移动到拥有锁定的等待队列中。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
AbstractQueuedSynchronizer.ConditionObject
public AbstractQueuedSynchronizer.ConditionObject()
- 创建一个新的 ConditionObject 实例。
方法详细信息 |
---|
signal
public final void signal()
- 将等待时间最长的线程(如果存在)从此条件的等待队列中移动到拥有锁定的等待队列。
-
- 抛出:
-
IllegalMonitorStateException
- 如果AbstractQueuedSynchronizer.isHeldExclusively()
返回 false
signalAll
public final void signalAll()
- 将所有线程从此条件的等待队列移动到拥有锁定的等待队列中。
-
- 抛出:
-
IllegalMonitorStateException
- 如果AbstractQueuedSynchronizer.isHeldExclusively()
返回 false
awaitUninterruptibly
public final void awaitUninterruptibly()
-
实现不可中断的条件等待。
- 保存
AbstractQueuedSynchronizer.getState()
返回的锁定状态 - 调用将保存的状态用作参数的
AbstractQueuedSynchronizer.release(int)
,如果失败则抛出 IllegalMonitorStateException。 - 在收到信号之前,会一直阻塞
- 通过调用将保存的状态用作参数的
AbstractQueuedSynchronizer.acquire(int)
特殊版本来重新获得线程。
- 保存
-
- 指定者:
-
接口
Condition
中的awaitUninterruptibly
-
await
public final void await() throws InterruptedException
-
实现不可中断的条件等待。
- 如果当前线程被中断,则抛出 InterruptedException
- 保存
AbstractQueuedSynchronizer.getState()
返回的锁定状态 - 调用将保存的状态用作参数的
AbstractQueuedSynchronizer.release(int)
,如果失败则抛出 IllegalMonitorStateException。 - 在收到信号或被中断之前,会一直阻塞
- 通过调用将保存的状态用作参数的
AbstractQueuedSynchronizer.acquire(int)
特殊版本来重新获得线程。 - 如果因为在步骤 4 中受阻而中断,则抛出异常
-
- 抛出:
-
InterruptedException
- 如果当前线程被中断(并且支持中断线程挂起)。
awaitNanos
public final long awaitNanos(long nanosTimeout) throws InterruptedException
-
实现定时的条件等待。
- 如果当前线程被中断,则抛出 InterruptedException
- 保存
AbstractQueuedSynchronizer.getState()
返回的锁定状态 - 调用将保存的状态用作参数的
AbstractQueuedSynchronizer.release(int)
,如果失败则抛出 IllegalMonitorStateException。 - 在收到信号、被中断或超时之前,会一直阻塞
- 通过调用将保存的状态用作参数的
AbstractQueuedSynchronizer.acquire(int)
特殊版本来重新获得线程。 - 如果因为在步骤 4 中受阻而中断,则抛出 InterruptedException
-
- 指定者:
-
接口
Condition
中的awaitNanos
-
- 参数:
-
nanosTimeout
- 等待的最长时间,以毫微秒为单位 - 返回:
- 如果超时,则返回一个小于或等于 0 的值;否则返回此方法返回时所剩余时间的估计值,该值绝对小于 nanosTimeout 参数。
- 抛出:
-
InterruptedException
- 如果当前线程被中断(并且支持中断线程挂起)。
awaitUntil
public final boolean awaitUntil(Date deadline) throws InterruptedException
-
实现绝对定时条件等待。
- 如果当前线程被中断,则抛出 InterruptedException
- 保存
AbstractQueuedSynchronizer.getState()
返回的锁定状态 - 调用将保存的状态用作参数的
AbstractQueuedSynchronizer.release(int)
,如果失败则抛出 IllegalMonitorStateException。 - 在收到信号、被中断或超时之前,会一直阻塞
- 通过调用将保存的状态用作参数的
AbstractQueuedSynchronizer.acquire(int)
特殊版本来重新获得线程。 - 如果因为在步骤 4 中受阻而中断,则抛出 InterruptedException
- 如果因为在步骤 4 中受阻而超时,则返回 false,其他情况返回 true
-
- 指定者:
-
接口
Condition
中的awaitUntil
-
- 参数:
-
deadline
- 一直处于等待状态的绝对时间 - 返回:
- 如果在返回时已经到达最后期限,则返回 false,否则返回 true。
- 抛出:
-
InterruptedException
- 如果当前线程被中断(并且支持中断线程挂起)。
await
public final boolean await(long time, TimeUnit unit) throws InterruptedException
-
实现定时的条件等待。
- 如果当前线程被中断,则抛出 InterruptedException
- 保存
AbstractQueuedSynchronizer.getState()
返回的锁定状态 - 调用将保存的状态用作参数的
AbstractQueuedSynchronizer.release(int)
,如果失败则抛出 IllegalMonitorStateException。 - 在收到信号、被中断或超时之前,会一直阻塞
- 通过调用将保存的状态用作参数的
AbstractQueuedSynchronizer.acquire(int)
特殊版本来重新获得线程。 - 如果因为在步骤 4 中受阻而中断,则抛出 InterruptedException
- 如果因为在步骤 4 中受阻而超时,则返回 false,其他情况返回 true
-
- 参数:
-
time
- 最长等待时间 -
unit
- time 参数的时间单位。 - 返回:
- 如果在从此方法返回前检测到等待时间超时,则返回 false,否则返回 true。
- 抛出:
-
InterruptedException
- 如果当前线程被中断(并且支持中断线程挂起)。