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
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.