Module java.base
Package java.util.concurrent.locks
Class AbstractQueuedLongSynchronizer.ConditionObject
java.lang.Object
java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject
- 所有已实现的接口:
-
Serializable
,Condition
public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
作为
AbstractQueuedLongSynchronizer
的条件实现,用作Lock
实现的基础。
此类的方法文档描述了机制,而不是从Lock和Condition用户的角度描述的行为规范。一般情况下,导出版本的此类需要附带描述条件语义的文档,这些条件语义依赖于相关的AbstractQueuedLongSynchronizer
的语义。
此类是可序列化的,但所有字段都是瞬态的,因此反序列化的条件没有等待者。
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionfinal void
await()
实现可中断的条件等待。final boolean
实现定时条件等待。final long
awaitNanos
(long nanosTimeout) 实现定时条件等待。final void
实现不可中断的条件等待。final boolean
awaitUntil
(Date deadline) 实现绝对定时条件等待。protected final Collection
<Thread> 返回一个包含可能正在等待此条件的线程的集合。protected final int
返回等待此条件的线程数的估计值。protected final boolean
查询是否有任何线程正在等待此条件。final void
signal()
将最长等待的线程(如果存在)从此条件的等待队列移动到拥有锁的等待队列。final void
将所有线程从此条件的等待队列移动到拥有锁的等待队列。
-
Constructor Details
-
ConditionObject
public ConditionObject()创建一个新的ConditionObject
实例。
-
-
Method Details
-
signal
public final void signal()将最长等待的线程(如果存在)从此条件的等待队列移动到拥有锁的等待队列。- 指定者:
-
signal
在接口Condition
中 - 抛出:
-
IllegalMonitorStateException
- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()
返回false
-
signalAll
public final void signalAll()将所有线程从此条件的等待队列移动到拥有锁的等待队列。- 指定者:
-
signalAll
在接口Condition
中 - 抛出:
-
IllegalMonitorStateException
- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()
返回false
-
awaitUninterruptibly
public final void awaitUninterruptibly()实现不可中断的条件等待。- 保存
AbstractQueuedLongSynchronizer.getState()
返回的锁状态。 - 使用保存的状态调用
AbstractQueuedLongSynchronizer.release(long)
,如果失败则抛出IllegalMonitorStateException。 - 阻塞直到收到信号。
- 通过使用保存的状态调用
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)
的专门版本重新获取。
- 指定者:
-
awaitUninterruptibly
在接口Condition
中
- 保存
-
await
实现可中断的条件等待。- 如果当前线程被中断,则抛出InterruptedException。
- 保存
AbstractQueuedLongSynchronizer.getState()
返回的锁状态。 - 使用保存的状态调用
AbstractQueuedLongSynchronizer.release(long)
,如果失败则抛出IllegalMonitorStateException。 - 阻塞直到收到信号或被中断。
- 通过使用保存的状态调用
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)
的专门版本重新获取。 - 如果在第4步阻塞时被中断,则抛出InterruptedException。
- 指定者:
-
await
在接口Condition
中 - 抛出:
-
InterruptedException
- 如果当前线程被中断(并支持线程挂起的中断)
-
awaitNanos
实现定时条件等待。- 如果当前线程被中断,则抛出InterruptedException。
- 保存
AbstractQueuedLongSynchronizer.getState()
返回的锁状态。 - 使用保存的状态调用
AbstractQueuedLongSynchronizer.release(long)
,如果失败则抛出IllegalMonitorStateException。 - 阻塞直到收到信号、被中断或超时。
- 通过使用保存的状态调用
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)
的专门版本重新获取。 - 如果在第4步阻塞时被中断,则抛出InterruptedException。
- 指定者:
-
awaitNanos
在接口Condition
中 - 参数:
-
nanosTimeout
- 等待的最长时间,以纳秒为单位 - 返回:
- 从此方法返回时,等待时间减去已花费时间的估计值。正值可用作下一次调用此方法的参数,以完成所需时间的等待。小于或等于零的值表示没有剩余时间。
- 抛出:
-
InterruptedException
- 如果当前线程被中断(并支持线程挂起的中断)
-
awaitUntil
实现绝对定时条件等待。- 如果当前线程被中断,则抛出InterruptedException。
- 保存
AbstractQueuedLongSynchronizer.getState()
返回的锁状态。 - 使用保存的状态调用
AbstractQueuedLongSynchronizer.release(long)
,如果失败则抛出IllegalMonitorStateException。 - 阻塞直到收到信号、被中断或超时。
- 通过使用保存的状态调用
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)
的专门版本重新获取。 - 如果在第4步阻塞时被中断,则抛出InterruptedException。
- 如果在第4步阻塞时超时,则返回false,否则返回true。
- 指定者:
-
awaitUntil
在接口Condition
中 - 参数:
-
deadline
- 等待的绝对时间 - 返回:
-
如果返回时已经过了截止时间,则返回
false
,否则返回true
- 抛出:
-
InterruptedException
- 如果当前线程被中断(并支持线程挂起的中断)
-
await
实现定时条件等待。- 如果当前线程被中断,则抛出InterruptedException。
- 保存
AbstractQueuedLongSynchronizer.getState()
返回的锁状态。 - 使用保存的状态调用
AbstractQueuedLongSynchronizer.release(long)
,如果失败则抛出IllegalMonitorStateException。 - 阻塞直到收到信号、被中断或超时。
- 通过使用保存的状态调用
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)
的专门版本重新获取。 - 如果在第4步阻塞时被中断,则抛出InterruptedException。
- 如果在第4步阻塞时超时,则返回false,否则返回true。
- 指定者:
-
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
返回包含可能正在等待此条件的线程的集合。实现AbstractQueuedLongSynchronizer.getWaitingThreads(ConditionObject)
。- 返回值:
- 线程的集合
- 抛出:
-
IllegalMonitorStateException
- 如果AbstractQueuedLongSynchronizer.isHeldExclusively()
返回false
-