public class AbstractQueuedSynchronizer.ConditionObject extends Object implements Condition, Serializable
AbstractQueuedSynchronizer
作为基础Lock
实施。
该类的方法文档描述了从锁定和条件用户角度看的机制,而不是行为规范。 该类的导出版本通常需要附有说明依赖于相关联的AbstractQueuedSynchronizer
的条件AbstractQueuedSynchronizer
。
这个类是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
- 如果
AbstractQueuedSynchronizer.isHeldExclusively()
返回
false
public final void signalAll()
signalAll
在界面
Condition
IllegalMonitorStateException
- 如果
AbstractQueuedSynchronizer.isHeldExclusively()
返回
false
public final void awaitUninterruptibly()
AbstractQueuedSynchronizer.getState()
。 AbstractQueuedSynchronizer.release(int)
与保存的状态作为参数,抛出IllegalMonitorStateException如果失败。 AbstractQueuedSynchronizer.acquire(int)
与保存的状态作为参数。 awaitUninterruptibly
在界面
Condition
public final void await() throws InterruptedException
AbstractQueuedSynchronizer.getState()
返回的锁定状态。 AbstractQueuedSynchronizer.release(int)
保存状态作为参数,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedSynchronizer.acquire(int)
作为参数来重新获取。 await
在界面
Condition
InterruptedException
- 如果当前线程中断(并且支持线程中断)
public final long awaitNanos(long nanosTimeout) throws InterruptedException
AbstractQueuedSynchronizer.getState()
。 AbstractQueuedSynchronizer.release(int)
,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedSynchronizer.acquire(int)
作为参数来重新获取。 awaitNanos
在界面
Condition
nanosTimeout
- 等待的最长时间,以纳秒为单位
nanosTimeout
值减去等待从此方法返回的时间。
可以使用正值作为随后调用此方法的参数,以完成等待所需时间。
小于或等于零的值表示没有时间。
InterruptedException
- 如果当前线程中断(支持线程暂停中断)
public final boolean awaitUntil(Date deadline) throws InterruptedException
AbstractQueuedSynchronizer.getState()
。 AbstractQueuedSynchronizer.release(int)
保存状态作为参数,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedSynchronizer.acquire(int)
以保存的状态作为参数来重新获取。 awaitUntil
在界面
Condition
deadline
- 等到...的绝对时间
false
如果截止日期已经过了,否则
true
InterruptedException
- 如果当前线程中断(并且支持线程中断)
public final boolean await(long time, TimeUnit unit) throws InterruptedException
AbstractQueuedSynchronizer.getState()
。 AbstractQueuedSynchronizer.release(int)
保存状态作为参数,如果失败,则抛出IllegalMonitorStateException。 AbstractQueuedSynchronizer.acquire(int)
通过保存的状态作为参数来重新获取。 await
在界面
Condition
time
- 等待的最长时间
unit
-
time
参数的时间单位
false
如果等待时间可以从方法返回前经过,否则
true
InterruptedException
- 如果当前线程被中断(并且支持线程中断)
protected final boolean hasWaiters()
AbstractQueuedSynchronizer.hasWaiters(ConditionObject)
。
true
如果有任何等待线程
IllegalMonitorStateException
- 如果
AbstractQueuedSynchronizer.isHeldExclusively()
返回
false
protected final int getWaitQueueLength()
AbstractQueuedSynchronizer.getWaitQueueLength(ConditionObject)
。
IllegalMonitorStateException
- 如果
AbstractQueuedSynchronizer.isHeldExclusively()
返回
false
protected final Collection<Thread> getWaitingThreads()
AbstractQueuedSynchronizer.getWaitingThreads(ConditionObject)
。
IllegalMonitorStateException
- 如果
AbstractQueuedSynchronizer.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.