|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.util.concurrent.locks.AbstractOwnableSynchronizer
java.util.concurrent.locks.AbstractQueuedLongSynchronizer
public abstract class AbstractQueuedLongSynchronizer
以 long 形式維護同步狀態的一個 AbstractQueuedSynchronizer 版本。此類別具有的結構、屬性和方法與 AbstractQueuedSynchronizer 完全相同,但所有與狀態相關的參數和結果都定義為 long 而不是 int。當創建需要 64 位狀態的多級別鎖和屏障等同步器時,此類別很有用。
有關用法說明和範例,請參閱 AbstractQueuedSynchronizer。
| 巢狀類別摘要 | |
|---|---|
class |
AbstractQueuedLongSynchronizer.ConditionObject
作為 Lock 實作基礎的 AbstractQueuedLongSynchronizer 的條件實作。 |
| 建構子摘要 | |
|---|---|
protected |
AbstractQueuedLongSynchronizer()
創建一個初始同步狀態為 0 的新 AbstractQueuedLongSynchronizer 實例。 |
| 方法摘要 | |
|---|---|
void |
acquire(long arg)
以獨佔網要獲取,忽略中斷。 |
void |
acquireInterruptibly(long arg)
以獨佔網要獲取,如果被中斷則中止。 |
void |
acquireShared(long arg)
以共享網要獲取,忽略中斷。 |
void |
acquireSharedInterruptibly(long arg)
以共享網要獲取,如果被中斷則中止。 |
protected boolean |
compareAndSetState(long expect,
long update)
如果當前狀態值等於預期值,則以原子方式將同步狀態設置為給定的更新值。 |
Collection<Thread> |
getExclusiveQueuedThreads()
返回一個 collection,該 collection 套件含正以獨佔網要等待獲取的執行緒。 |
Thread |
getFirstQueuedThread()
返回佇列中第一個(等待時間最長的)執行緒;如果當前沒有將任何執行緒加入佇列,則返回 null。 |
Collection<Thread> |
getQueuedThreads()
返回一個 collection,該 collection 套件含正在等待獲取的執行緒。 |
int |
getQueueLength()
返回等待獲取的執行緒估計數。 |
Collection<Thread> |
getSharedQueuedThreads()
返回一個 collection,該 collection 套件含正以共享網要等待獲取的執行緒。 |
protected long |
getState()
返回同步狀態的當前值。 |
Collection<Thread> |
getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
返回一個 collection,該 collection 套件含那些正在與此同步器關聯的給定條件上等待的執行緒。 |
int |
getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
返回正在與此同步器關聯的給定條件上等待的執行緒估計數。 |
boolean |
hasContended()
查詢是否有執行緒曾經為獲取此同步器而發生爭用;也就是說,是否某個 acquire 方法曾被阻塞。 |
boolean |
hasQueuedThreads()
查詢是否有等待獲取的執行緒。 |
boolean |
hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
查詢是否有執行緒正在與此同步器關聯的給定條件上等待。 |
protected boolean |
isHeldExclusively()
如果對於當前(調用的)執行緒,同步是以獨佔方式進行的,則返回 true。 |
boolean |
isQueued(Thread thread)
如果給定執行緒當前已加入佇列,則返回 true。 |
boolean |
owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
查詢給定 ConditionObject 是否使用此同步器作為它的鎖。 |
boolean |
release(long arg)
以獨佔網要釋放。 |
boolean |
releaseShared(long arg)
以共享網要釋放。 |
protected void |
setState(long newState)
設置同步狀態的值。 |
String |
toString()
返回標識此同步器及其狀態的字元串。 |
protected boolean |
tryAcquire(long arg)
嘗試在獨佔網要下獲取。 |
boolean |
tryAcquireNanos(long arg,
long nanosTimeout)
嘗試以獨佔網要獲取,如果被中斷則中止,如果超過給定逾時期則失敗。 |
protected long |
tryAcquireShared(long arg)
嘗試在共享網要下獲取。 |
boolean |
tryAcquireSharedNanos(long arg,
long nanosTimeout)
嘗試以共享網要獲取,如果被中斷則中止,如果超過給定逾時期則失敗。 |
protected boolean |
tryRelease(long arg)
嘗試設置狀態來反映獨佔網要下的釋放。 |
protected boolean |
tryReleaseShared(long arg)
嘗試設置狀態來反映共享網要下的釋放。 |
| 從類別 java.util.concurrent.locks.AbstractOwnableSynchronizer 繼承的方法 |
|---|
getExclusiveOwnerThread, setExclusiveOwnerThread |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 建構子詳細資訊 |
|---|
protected AbstractQueuedLongSynchronizer()
| 方法詳細資訊 |
|---|
protected final long getState()
protected final void setState(long newState)
newState - 新的狀態值
protected final boolean compareAndSetState(long expect,
long update)
expect - 預期值update - 新值
protected boolean tryAcquire(long arg)
此方法總是由執行獲取的執行緒調用。如果此方法報告失敗,則 acquire 方法可以將執行緒加入佇列(如果它還沒有加入佇列),直到收到其他執行緒的釋放信號為止。可以使用此方法來實作 Lock.tryLock() 方法。
預設實作將拋出 UnsupportedOperationException。
arg - 獲取參數。此值總是傳遞給 acquire 方法的那個值,或者是保存在某個條件等待條目上的值。該值在其他方面沒有解釋,可以表示任何內容。
true。在成功時,此物件已經被獲取。
IllegalMonitorStateException - 如果獲取操作會將此同步器變為非法狀態。為了同步的正常運行,必須以統一的方式拋出此異常。
UnsupportedOperationException - 如果不支持獨佔網要protected boolean tryRelease(long arg)
此方法總是由執行釋放的執行緒調用。
預設實作將拋出 UnsupportedOperationException。
arg - 釋放參數。此值總是傳遞給 release 方法的那個值,或者是某個條件等待條目上的當前狀態值。該值在其他方面沒有解釋,可以表示任何內容。
true;否則返回 false。
IllegalMonitorStateException - 如果釋放操作會將此同步器變為非法狀態。為了同步的正常運行,必須以統一的方式拋出此異常。
UnsupportedOperationException - 如果不支持獨佔網要protected long tryAcquireShared(long arg)
此方法總是由執行獲取的執行緒調用。如果此方法報告失敗,則 acquire 方法可以將執行緒加入佇列(如果它還沒有加入佇列),直到收到其他執行緒的釋放信號為止。
預設實作將拋出 UnsupportedOperationException。
arg - 獲取參數。此值總是傳遞給 acquire 方法的那個值,或者是保存在某個條件等待條目上的值。該值在其他方面沒有解釋,可以表示任何內容。
IllegalMonitorStateException - 如果獲取操作會將此同步器變為非法狀態。為了同步的正常運行,必須以統一的方式拋出此異常。
UnsupportedOperationException - 如果不支持共享網要protected boolean tryReleaseShared(long arg)
此方法總是由執行釋放的執行緒調用。
預設實作將拋出 UnsupportedOperationException。
arg - 釋放參數。此值總是傳遞給 release 方法的那個值,或者是某個條件等待條目上的當前狀態值。該值在其他方面沒有解釋,可以表示任何內容。
true;否則返回 false
IllegalMonitorStateException - 如果釋放操作會將此同步器變為非法狀態。為了同步的正常運行,必須以統一的方式拋出此異常。
UnsupportedOperationException - 如果不支持共享網要protected boolean isHeldExclusively()
true。此方法是在每次調用非等待 AbstractQueuedLongSynchronizer.ConditionObject 方法時調用的。(等待方法則調用 release(long)。)
預設實作將拋出 UnsupportedOperationException。此方法只在 AbstractQueuedLongSynchronizer.ConditionObject 方法中進行內部調用,因此,如果不使用條件,則不需要定義它。
true;否則返回 false
UnsupportedOperationException - 如果不支持這些條件public final void acquire(long arg)
tryAcquire(long),並在成功時返回。否則,在成功之前,執行緒將加入佇列,可能反覆處於阻塞或未阻塞狀態,並一直調用 tryAcquire(long)。可以使用此方法來實作 Lock.lock() 方法。
arg - 獲取參數。此值被傳送給 tryAcquire(long),但在其他方面沒有解釋,可以表示任何內容。
public final void acquireInterruptibly(long arg)
throws InterruptedException
tryAcquire(long),並在成功時返回。否則,在成功或執行緒中斷之前,執行緒將加入佇列,可能反覆處於阻塞或未阻塞狀態,並一直調用 tryAcquire(long)。可以使用此方法來實作 Lock.lockInterruptibly() 方法。
arg - 獲取參數。此值被傳送給 tryAcquire(long),但在其他方面沒有解釋,可以表示任何內容。
InterruptedException - 如果當前執行緒被中斷
public final boolean tryAcquireNanos(long arg,
long nanosTimeout)
throws InterruptedException
tryAcquire(long),並在成功時返回。否則,在成功、執行緒中斷或超過逾時期之前,執行緒將加入佇列,可能反覆處於阻塞或未阻塞狀態,並一直調用 tryAcquire(long)。可以使用此方法來實作 Lock.tryLock(long, TimeUnit) 方法。
arg - 獲取參數。此值被傳送給 tryAcquire(long),但在其他方面沒有解釋,可以表示任何內容。nanosTimeout - 等待的最大毫微秒數
true;如果逾時,則返回 false
InterruptedException - 如果當前執行緒被中斷public final boolean release(long arg)
tryRelease(long) 返回 true,則通過取消一個或多個執行緒的阻塞來實作此方法。可以使用此方法來實作 Lock.unlock() 方法。
arg - 釋放參數。此值被傳送給 tryRelease(long),但在其他方面沒有解釋,可以表示任何內容。
tryRelease(long) 返回的值public final void acquireShared(long arg)
tryAcquireShared(long),並在成功時返回。否則,在成功之前,執行緒將加入佇列,可能反覆處於阻塞或未阻塞狀態,並一直調用 tryAcquireShared(long)。
arg - 獲取參數。此值被傳送給 tryAcquireShared(long),但在其他方面沒有解釋,可以表示任何內容。
public final void acquireSharedInterruptibly(long arg)
throws InterruptedException
tryAcquireShared(long),並在成功時返回。否則,在成功或執行緒中斷之前,執行緒將加入佇列,可能反覆處於阻塞或未阻塞狀態,並一直調用 tryAcquireShared(long)。
arg - 獲取參數。此值被傳送給 tryAcquireShared(long),但在其他方面沒有解釋,可以表示任何內容。
InterruptedException - 如果當前執行緒被中斷
public final boolean tryAcquireSharedNanos(long arg,
long nanosTimeout)
throws InterruptedException
tryAcquireShared(long),並在成功時返回。否則,在成功、執行緒中斷或超過逾時期之前,執行緒將加入佇列,可能反覆處於阻塞或未阻塞狀態,並一直調用 tryAcquireShared(long)。
arg - 獲取參數。此值被傳送給 tryAcquireShared(long),但在其他方面沒有解釋,可以表示任何內容。nanosTimeout - 等待的最大毫微秒數
true;如果逾時,則返回 false
InterruptedException - 如果當前執行緒被中斷public final boolean releaseShared(long arg)
tryReleaseShared(long) 返回 true,則通過取消一個或多個執行緒的阻塞來實作此方法。
arg - 釋放參數。此值被傳送給 tryReleaseShared(long),但在其他方面沒有解釋,可以表示任何內容。
tryReleaseShared(long) 中返回的值public final boolean hasQueuedThreads()
true 並不能保證任何其他執行緒能一直獲取。
在此實作中,此操作是以固定時間返回的。
truepublic final boolean hasContended()
在此實作中,此操作是以固定時間返回的。
truepublic final Thread getFirstQueuedThread()
null。
在此實作中,此操作通常是以固定時間返回的,但是,如果其他執行緒正在共時修改該佇列,則可能出現循環爭用。
nullpublic final boolean isQueued(Thread thread)
此實作將遍歷佇列,以確定給定執行緒是否存在。
thread - 執行緒
true
NullPointerException - 如果執行緒為 nullpublic final int getQueueLength()
public final Collection<Thread> getQueuedThreads()
public final Collection<Thread> getExclusiveQueuedThreads()
getQueuedThreads() 相同,但它只返回那些因獨佔獲取而等待的執行緒。
public final Collection<Thread> getSharedQueuedThreads()
getQueuedThreads() 相同,但它只返回那些因共享獲取而等待的執行緒。
public String toString()
"State =",後跟 getState() 的當前值,再後面是 "nonempty" 或 "empty",具體取決於佇列是否為空。
Object 中的 toStringpublic final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 條件
NullPointerException - 如果 condition 為 nullpublic final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 條件
IllegalMonitorStateException - 如果不進行獨佔同步
IllegalArgumentException - 如果給定條件與此同步器沒有關聯
NullPointerException - 如果 condition 為 nullpublic final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 條件
IllegalMonitorStateException - 如果不進行獨佔同步
IllegalArgumentException - 如果給定條件與此同步器沒有關聯
NullPointerException - 如果 condition 為 nullpublic final Collection<Thread> getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 條件
IllegalMonitorStateException - 如果不進行獨佔同步
IllegalArgumentException - 如果給定條件與此同步器沒有關聯
NullPointerException - 如果 condition 為 null
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。