public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
AbstractQueuedLongSynchronizer
作为基础Lock
实施。
该类的方法文档描述了从锁定和条件用户角度看的机制,而不是行为规范。 该类的导出版本通常需要附有描述依赖于相关联的AbstractQueuedLongSynchronizer
的条件AbstractQueuedLongSynchronizer
。
这个类是Serializable,但是所有字段都是暂时的,所以反序列化的条件没有服务器。
Constructor and Description |
---|
ConditionObject()
创建一个新的
ConditionObject 实例。
|
Modifier and Type | Method and Description |
---|---|
void |
await()
实现可中断条件等待。
|
boolean |
await(long time, TimeUnit unit)
实现定时状态等待。
|
long |
awaitNanos(long nanosTimeout)
实现定时状态等待。
|
void |
awaitUninterruptibly()
实现不间断状态等待。
|
boolean |
awaitUntil(Date deadline)
实现绝对定时条件等待。
|
protected Collection<Thread> |
getWaitingThreads()
返回一个包含可能在此条件下等待的线程的集合。
|
protected int |
getWaitQueueLength()
返回等待此条件的线程数的估计。
|
protected boolean |
hasWaiters()
查询是否有任何线程正在等待这种情况。
|
void |
signal()
将最长等待的线程(如果存在)从等待队列移动到拥有锁的等待队列。
|
void |
signalAll()
将所有线程从这个条件的等待队列移动到拥有锁的等待队列。
|
public final void signal()
signal
在界面
Condition
IllegalMonitorStateException
- 如果
AbstractQueuedLongSynchronizer.isHeldExclusively()
返回
false
public final void signalAll()
signalAll
在界面
Condition
IllegalMonitorStateException
- 如果
AbstractQueuedLongSynchronizer.isHeldExclusively()
返回
false
public final void awaitUninterruptibly()
AbstractQueuedLongSynchronizer.getState()
返回的锁定状态。 AbstractQueuedLongSynchronizer.release(long)
,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedLongSynchronizer.acquire(long)
重新获取 ,保存状态作为参数。 awaitUninterruptibly
在界面
Condition
public final void await() throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
返回的锁定状态。 AbstractQueuedLongSynchronizer.release(long)
保存状态作为参数,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedLongSynchronizer.acquire(long)
以保存的状态作为参数来重新获取。 await
在界面
Condition
InterruptedException
- 如果当前线程中断(并且支持线程中断)
public final long awaitNanos(long nanosTimeout) throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
返回的锁定状态。 AbstractQueuedLongSynchronizer.release(long)
,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedLongSynchronizer.acquire(long)
与保存的状态作为参数来重新获取。 awaitNanos
在界面
Condition
nanosTimeout
- 以
nanosTimeout
为单位的最长等待时间
nanosTimeout
值减去等待从此方法返回的时间。
可以使用正值作为随后调用此方法的参数,以完成等待所需时间。
小于或等于零的值表示没有时间。
InterruptedException
- 如果当前线程中断(并且支持线程中断)
public final boolean awaitUntil(Date deadline) throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
返回的锁定状态。 AbstractQueuedLongSynchronizer.release(long)
保存状态作为参数,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedLongSynchronizer.acquire(long)
与保存的状态作为参数。 awaitUntil
在界面
Condition
deadline
- 绝对等待的时间
false
如果最后期限在退货后
true
,否则
true
InterruptedException
- 如果当前线程被中断(并且支持线程中断)
public final boolean await(long time, TimeUnit unit) throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
。 AbstractQueuedLongSynchronizer.release(long)
保存状态作为参数,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedLongSynchronizer.acquire(long)
与保存的状态作为参数来重新获取。 await
在界面
Condition
time
- 等待的最长时间
unit
-
time
参数的时间单位
false
如果等待时间可以从方法返回前经过,否则
true
InterruptedException
- 如果当前线程中断(并且支持线程中断)
protected final boolean hasWaiters()
AbstractQueuedLongSynchronizer.hasWaiters(ConditionObject)
。
true
如果有任何等待线程
IllegalMonitorStateException
- 如果
AbstractQueuedLongSynchronizer.isHeldExclusively()
返回
false
protected final int getWaitQueueLength()
AbstractQueuedLongSynchronizer.getWaitQueueLength(ConditionObject)
。
IllegalMonitorStateException
- 如果
AbstractQueuedLongSynchronizer.isHeldExclusively()
返回
false
protected final Collection<Thread> getWaitingThreads()
AbstractQueuedLongSynchronizer.getWaitingThreads(ConditionObject)
。
IllegalMonitorStateException
- 如果
AbstractQueuedLongSynchronizer.isHeldExclusively()
返回
false