JavaTM 2 Platform
Standard Ed. 6

java.util.concurrent.locks
類別 AbstractQueuedLongSynchronizer.ConditionObject

java.lang.Object
  繼承者 java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject
所有已實作的介面:
Serializable, Condition
正在封閉類別:
AbstractQueuedLongSynchronizer

public class AbstractQueuedLongSynchronizer.ConditionObject
extends Object
implements Condition, Serializable

作為 Lock 實作基礎的 AbstractQueuedLongSynchronizer 的條件實作。

此類別的方法文檔不是一個行為規範,而是從 Lock 和 Condition 使用者的角度描述機制。此類別的導出版本通常需要附帶描述條件語義的文檔,這些語義依賴關聯 AbstractQueuedLongSynchronizer 的那些條件的語義。

此類別是可序列化的,但所有欄位都是瞬態的,因此序列化條件沒有等待執行緒。

從以下版本開始:
1.6
另請參見:
序列化表格

建構子摘要
AbstractQueuedLongSynchronizer.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,該 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
 

建構子詳細資訊

AbstractQueuedLongSynchronizer.ConditionObject

public AbstractQueuedLongSynchronizer.ConditionObject()
創建一個新的 ConditionObject 實例。

方法詳細資訊

signal

public final void signal()
將等待時間最長的執行緒(如果有)從此條件的等待佇列移動到擁有鎖的等待佇列。

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

signalAll

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

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

awaitUninterruptibly

public final void awaitUninterruptibly()
實作不可中斷的條件等待。
  1. 保存 AbstractQueuedLongSynchronizer.getState() 返回的鎖定狀態
  2. 以保存的狀態作為參數調用 AbstractQueuedLongSynchronizer.release(long),如果調用失敗,則拋出 IllegalMonitorStateException。
  3. 在收到信號之前,一直阻塞
  4. 以保存的狀態作為參數調用 AbstractQueuedLongSynchronizer.acquire(long) 的特定版本重新獲取。

指定者:
介面 Condition 中的 awaitUninterruptibly

await

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

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

awaitNanos

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

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

awaitUntil

public final boolean awaitUntil(Date deadline)
                         throws InterruptedException
實作絕對定時條件等待。
  1. 如果當前執行緒被中斷,則拋出 InterruptedException
  2. 保存 AbstractQueuedLongSynchronizer.getState() 返回的鎖定狀態
  3. 以保存的狀態作為參數調用 AbstractQueuedLongSynchronizer.release(long),如果調用失敗,則拋出 IllegalMonitorStateException。
  4. 在收到信號、中斷或逾時之前,一直阻塞
  5. 以保存的狀態作為參數調用 AbstractQueuedLongSynchronizer.acquire(long) 的特定版本重新獲取。
  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. 保存 AbstractQueuedLongSynchronizer.getState() 返回的鎖定狀態
  3. 以保存的狀態作為參數調用 AbstractQueuedLongSynchronizer.release(long),如果調用失敗,則拋出 IllegalMonitorStateException。
  4. 在收到信號、中斷或逾時之前,一直阻塞
  5. 以保存的狀態作為參數調用 AbstractQueuedLongSynchronizer.acquire(long) 的特定版本重新獲取。
  6. 如果步驟 4 的阻塞過程中發生中斷,則拋出 InterruptedException
  7. 如果步驟 4 的阻塞過程中發生逾時,則返回 false,否則返回 true

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

hasWaiters

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

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

getWaitQueueLength

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

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

getWaitingThreads

protected final Collection<Thread> getWaitingThreads()
返回一個 collection,該 collection 套件含那些正在此條件等待的執行緒。實作 AbstractQueuedLongSynchronizer.getWaitingThreads(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject)

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

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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