JavaTM 2 Platform
Standard Ed. 6

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()
將等待時間最長的執行緒(如果存在)從此條件的等待佇列中移動到擁有鎖的等待佇列。

指定者:
介面 Condition 中的 signal
拋出:
IllegalMonitorStateException - 如果 AbstractQueuedSynchronizer.isHeldExclusively() 返回 false

signalAll

public final void signalAll()
將所有執行緒從此條件的等待佇列移動到擁有鎖的等待佇列中。

指定者:
介面 Condition 中的 signalAll
拋出:
IllegalMonitorStateException - 如果 AbstractQueuedSynchronizer.isHeldExclusively() 返回 false

awaitUninterruptibly

public final void awaitUninterruptibly()
實作不可中斷的條件等待。
  1. 保存 AbstractQueuedSynchronizer.getState() 返回的鎖定狀態
  2. 調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.release(int),如果失敗則拋出 IllegalMonitorStateException。
  3. 在收到信號之前,會一直阻塞
  4. 通過調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.acquire(int) 特殊版本來重新獲得執行緒。

指定者:
介面 Condition 中的 awaitUninterruptibly

await

public final void await()
                 throws InterruptedException
實作不可中斷的條件等待。
  1. 如果當前執行緒被中斷,則拋出 InterruptedException
  2. 保存 AbstractQueuedSynchronizer.getState() 返回的鎖定狀態
  3. 調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.release(int),如果失敗則拋出 IllegalMonitorStateException。
  4. 在收到信號或被中斷之前,會一直阻塞
  5. 通過調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.acquire(int) 特殊版本來重新獲得執行緒。
  6. 如果因為在步驟 4 中受阻而中斷,則拋出異常

指定者:
介面 Condition 中的 await
拋出:
InterruptedException - 如果當前執行緒被中斷(並且支持中斷執行緒掛起)

awaitNanos

public final long awaitNanos(long nanosTimeout)
                      throws InterruptedException
實作定時的條件等待。
  1. 如果當前執行緒被中斷,則拋出 InterruptedException
  2. 保存 AbstractQueuedSynchronizer.getState() 返回的鎖定狀態
  3. 調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.release(int),如果失敗則拋出 IllegalMonitorStateException。
  4. 在收到信號、被中斷或逾時之前,會一直阻塞
  5. 通過調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.acquire(int) 特殊版本來重新獲得執行緒。
  6. 如果因為在步驟 4 中受阻而中斷,則拋出 InterruptedException

指定者:
介面 Condition 中的 awaitNanos
參數:
nanosTimeout - 等待的最長時間,以毫微秒為單位
返回:
nanosTimeout 值減去花費在等待此方法的返回結果的時間的估算。正值可以用作對此方法進行後續調用的參數,來完成等待所需時間結束。小於等於零的值表示沒有剩餘時間。
拋出:
InterruptedException - 如果當前執行緒被中斷(並且支持中斷執行緒掛起)

awaitUntil

public final boolean awaitUntil(Date deadline)
                         throws InterruptedException
實作絕對定時條件等待。
  1. 如果當前執行緒被中斷,則拋出 InterruptedException
  2. 保存 AbstractQueuedSynchronizer.getState() 返回的鎖定狀態
  3. 調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.release(int),如果失敗則拋出 IllegalMonitorStateException。
  4. 在收到信號、被中斷或逾時之前,會一直阻塞
  5. 通過調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.acquire(int) 特殊版本來重新獲得執行緒。
  6. 如果因為在步驟 4 中受阻而中斷,則拋出 InterruptedException
  7. 如果因為在步驟 4 中受阻而逾時,則返回 false,其他情況返回 true

指定者:
介面 Condition 中的 awaitUntil
參數:
deadline - 一直處於等待狀態的絕對時間
返回:
如果在返回時已經到達最後期限,則返回 false,否則返回 true
拋出:
InterruptedException - 如果當前執行緒被中斷(並且支持中斷執行緒掛起)

await

public final boolean await(long time,
                           TimeUnit unit)
                    throws InterruptedException
實作定時的條件等待。
  1. 如果當前執行緒被中斷,則拋出 InterruptedException
  2. 保存 AbstractQueuedSynchronizer.getState() 返回的鎖定狀態
  3. 調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.release(int),如果失敗則拋出 IllegalMonitorStateException。
  4. 在收到信號、被中斷或逾時之前,會一直阻塞
  5. 通過調用將保存的狀態用作參數的 AbstractQueuedSynchronizer.acquire(int) 特殊版本來重新獲得執行緒。
  6. 如果因為在步驟 4 中受阻而中斷,則拋出 InterruptedException
  7. 如果因為在步驟 4 中受阻而逾時,則返回 false,其他情況返回 true

指定者:
介面 Condition 中的 await
參數:
time - 最長等待時間
unit - time 參數的時間單位
返回:
如果在從此方法返回前檢測到等待時間逾時,則返回 false,否則返回 true
拋出:
InterruptedException - 如果當前執行緒被中斷(並且支持中斷執行緒掛起)

hasWaiters

protected final boolean hasWaiters()
查詢是否有正在等待此條件的任何執行緒。實作 AbstractQueuedSynchronizer.hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject)

返回:
如果有正在等待的任何執行緒,則返回 true
拋出:
IllegalMonitorStateException - 如果 AbstractQueuedSynchronizer.isHeldExclusively() 返回 false

getWaitQueueLength

protected final int getWaitQueueLength()
返回正在等待此條件的執行緒數估計值。實作 AbstractQueuedSynchronizer.getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject)

返回:
正在等待的執行緒估計數
拋出:
IllegalMonitorStateException - 如果 AbstractQueuedSynchronizer.isHeldExclusively() 返回 false

getWaitingThreads

protected final Collection<Thread> getWaitingThreads()
返回包含那些可能正在等待此條件的執行緒 collection。實作 AbstractQueuedSynchronizer.getWaitingThreads(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject)

返回:
執行緒的 collection
拋出:
IllegalMonitorStateException - 如果 AbstractQueuedSynchronizer.isHeldExclusively() 返回 false

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only