|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock
public static class ReentrantReadWriteLock.WriteLock
ReentrantReadWriteLock.writeLock()
方法返回的鎖。
建構子摘要 | |
---|---|
protected |
ReentrantReadWriteLock.WriteLock(ReentrantReadWriteLock lock)
子類別使用的建構子 |
方法摘要 | |
---|---|
int |
getHoldCount()
查詢當前執行緒保持寫入鎖的數量。 |
boolean |
isHeldByCurrentThread()
查詢此寫入鎖是否由當前執行緒保持。 |
void |
lock()
獲取寫入鎖。 |
void |
lockInterruptibly()
獲取寫入鎖,除非當前執行緒被中斷。 |
Condition |
newCondition()
返回一個用來與此 Lock 實例一起使用的 Condition 實例。 |
String |
toString()
返回標識此鎖及其鎖狀態的字元串。 |
boolean |
tryLock()
僅當寫入鎖在調用期間未被另一個執行緒保持時獲取該鎖。 |
boolean |
tryLock(long timeout,
TimeUnit unit)
如果另一個執行緒在給定的等待時間內沒有保持寫入鎖,並且當前執行緒未被中斷,則獲取寫入鎖。 |
void |
unlock()
試圖釋放此鎖。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
建構子詳細資訊 |
---|
protected ReentrantReadWriteLock.WriteLock(ReentrantReadWriteLock lock)
lock
- 外部鎖物件
NullPointerException
- 如果鎖為 null方法詳細資訊 |
---|
public void lock()
如果另一個執行緒既沒有保持讀取鎖也沒有保持寫入鎖,則獲取寫入鎖並立即返回,並將寫入鎖保持計數設置為 1。
如果當前執行緒已經保持寫入鎖,則保持計數增加 1,該方法立即返回。
如果該鎖被另一個執行緒保持,出於執行緒排程的目的,將禁用當前執行緒,並且在獲得寫入鎖之前,該執行緒將一直處於休眠狀態,此時寫入鎖保持計數設置為 1。
Lock
中的 lock
public void lockInterruptibly() throws InterruptedException
如果另一個執行緒既沒有保持讀取鎖也沒有保持寫入鎖,則獲取寫入鎖並立即返回,並將寫入鎖保持計數設置為 1。
如果當前執行緒已經保持此鎖,則將保持計數加 1,該方法立即返回。
如果鎖被另一個執行緒保持,則出於執行緒排程目的,禁用當前執行緒,並且在發生以下兩種情況之一以前,該執行緒將一直處於休眠狀態:
如果當前執行緒獲得寫入鎖,則將鎖保持計數設置為 1。
如果當前執行緒:
InterruptedException
,並且清除當前執行緒的已中斷狀態。
在此實作中,因為此方法是一個顯式中斷點,所以要優先考慮回應中斷,而不是回應鎖的普通獲取或重入獲取。
Lock
中的 lockInterruptibly
InterruptedException
- 如果當前執行緒是已中斷的。public boolean tryLock()
如果另一個執行緒既沒有保持讀取鎖也沒有保持寫入鎖,則獲取寫入鎖並立即返回 true
值,並將寫入鎖保持計數設置為 1。即使已將此鎖設置為使用公平排序策略,但是調用 tryLock()
仍將 立即獲取鎖(如果有可用的),不管其他執行緒當前是否正在等待寫入鎖。在某些情況下,此“闖入”行為可能很有用,即使它會打破公平性也如此。如果希望遵守此鎖的公平設置,則使用 tryLock(0, TimeUnit.SECONDS)
,它幾乎是等效的(它也檢測中斷)。
如果當前執行緒已經保持此鎖,則將保持計數加 1,該方法將返回 true
。
如果鎖被另一個執行緒保持,則此方法將立即返回 false
值。
Lock
中的 tryLock
true
;否則返回 false
。public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException
如果另一個執行緒既沒有保持讀取鎖也沒有保持寫入鎖,則獲取寫入鎖並立即返回 true
值,並將寫入鎖保持計數設置為 1。如果為了使用公平的排序策略,已經設置此鎖,並且其他執行緒都在等待寫入鎖,則不會 獲取一個可用的鎖。這與 tryLock()
方法相反。如果想使用一個允許闖入公平鎖的定時 tryLock
,那麼可以將定時形式和不定時形式組合在一起:
if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... }
如果當前執行緒已經保持此鎖,則將保持計數加 1,該方法將返回 true
。
如果鎖被另一個執行緒保持,則出於執行緒排程目的,禁用當前執行緒,並且在發生以下三種情況之一以前,該執行緒將一直處於休眠狀態:
如果獲取了寫入鎖,則返回 true
值,並將寫入鎖保持計數設置為 1。
如果當前執行緒:
InterruptedException
,並且清除當前執行緒的已中斷狀態。
如果超出了指定的等待時間,則返回值為 false
。如果該時間小於等於 0,則此方法根本不會等待。
在此實作中,因為此方法是一個顯式中斷點,所以要優先考慮回應中斷,而不是回應鎖的普通獲取或重入獲取,或者報告所用的等待時間。
Lock
中的 tryLock
timeou
- 等待寫入鎖的時間unit
- timeout 參數的時間單位
true
;如果在獲取該鎖之前已經到達等待時間,則返回 false
。
InterruptedException
- 如果當前執行緒被中斷
NullPointerException
- 如果時間單位為 nullpublic void unlock()
如果當前執行緒保持此鎖,則將保持計數減 1。如果保持計數現在為 0,則釋放該鎖。如果當前執行緒不是此鎖的持有者,則拋出 IllegalMonitorStateException
。
Lock
中的 unlock
IllegalMonitorStateException
- 如果當前執行緒沒有保持此鎖。public Condition newCondition()
Lock
實例一起使用的 Condition
實例。
在使用內置監視器鎖時,返回的 Condition
實例支持與 Object
的監視器方法(wait
、notify
和 notifyAll
)相同的用法。
Condition
方法時沒有保持此寫入鎖,則拋出 IllegalMonitorStateException
。(因為保持讀取鎖是獨立於寫入鎖的,所以讀取鎖將不被檢查或受影響。但是,在當前執行緒已經獲取讀取鎖時,調用一個條件等待方法實質上一直是錯誤的做法,因為能夠解除阻塞該方法的其他執行緒將無法獲取寫入鎖。)
InterruptedException
,清除執行緒的已中斷狀態。
Lock
中的 newCondition
public String toString()
"Unlocked"
或字元串 "Locked by"
,後跟所擁有執行緒的名稱。
Object
中的 toString
public boolean isHeldByCurrentThread()
ReentrantReadWriteLock.isWriteLockedByCurrentThread()
效果相同。
true
;否則返回 false
public int getHoldCount()
ReentrantReadWriteLock.getWriteHoldCount()
效果相同。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。