|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.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
並不能保證任何其他執行緒能一直獲取。
在此實作中,此操作是以固定時間返回的。
true
public final boolean hasContended()
在此實作中,此操作是以固定時間返回的。
true
public final Thread getFirstQueuedThread()
null
。
在此實作中,此操作通常是以固定時間返回的,但是,如果其他執行緒正在共時修改該佇列,則可能出現循環爭用。
null
public 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
中的 toString
public 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。