|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock
public static class ReentrantReadWriteLock.ReadLock
ReentrantReadWriteLock.readLock()
方法返回的鎖。
建構子摘要 | |
---|---|
protected |
ReentrantReadWriteLock.ReadLock(ReentrantReadWriteLock lock)
子類別使用的建構子 |
方法摘要 | |
---|---|
void |
lock()
獲取讀取鎖。 |
void |
lockInterruptibly()
獲取讀取鎖,除非當前執行緒被中斷。 |
Condition |
newCondition()
因為 ReadLocks 不支持條件,所以將拋出 UnsupportedOperationException 。 |
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.ReadLock(ReentrantReadWriteLock lock)
lock
- 外部鎖物件
NullPointerException
- 如果 lock 為 null方法詳細資訊 |
---|
public void lock()
如果另一個執行緒沒有保持寫入鎖,則獲取讀取鎖並立即返回。
如果另一個執行緒保持該寫入鎖,出於執行緒排程目的,將禁用當前執行緒,並且在獲取讀取鎖之前,該執行緒將一直處於休眠狀態。
Lock
中的 lock
public void lockInterruptibly() throws InterruptedException
如果另一個執行緒沒有保持寫入鎖,則獲取讀取鎖並立即返回。
如果另一個執行緒保持了該寫入鎖,出於執行緒排程目的,將禁用當前執行緒,並且在發生以下兩種情況之一以前,該執行緒將一直處於休眠狀態:
如果當前執行緒:
InterruptedException
,並且清除當前執行緒的已中斷狀態。
在此實作中,因為此方法是一個顯式中斷點,所以要優先考慮回應中斷,而不是回應鎖的普通獲取或重入獲取。
Lock
中的 lockInterruptibly
InterruptedException
- 如果當前執行緒是已中斷的。public boolean tryLock()
如果另一個執行緒沒有保持寫入鎖,則獲取讀取鎖並立即返回 true
值。即使已將此鎖設置為使用公平排序策略,但是調用 tryLock()
仍將 立即獲取讀取鎖(如果有可用的),不管其他執行緒當前是否正在等待該讀取鎖。在某些情況下,此“闖入”行為可能很有用,即使它會打破公平性也如此。如果希望遵守此鎖的公平設置,則使用 tryLock(0, TimeUnit.SECONDS)
,它幾乎是等效的(它也檢測中斷)。
如果寫入鎖被另一個執行緒保持,則此方法將立即返回 false
值。
Lock
中的 tryLock
true
public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException
如果另一個執行緒沒有保持寫入鎖,則獲取讀取鎖並立即返回 true
值。如果已經設置此鎖使用公平的排序策略,並且其他執行緒都在等待該鎖,則不會 獲取一個可用的鎖。這與 tryLock()
方法相反。如果想使用一個允許闖入公平鎖的定時 tryLock
,那麼可以將定時形式和不定時形式組合在一起:
if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... }
如果寫入鎖被另一個執行緒保持,則出於執行緒排程目的,禁用當前執行緒,並且在發生以下三種情況之一以前,該執行緒將一直處於休眠狀態:
如果獲得了讀取鎖,則返回 true
值。
如果當前執行緒:
InterruptedException
,並且清除當前執行緒的已中斷狀態。
如果超出了指定的等待時間,則返回值為 false
。如果該時間小於等於 0,則此方法根本不會等待。
在此實作中,因為此方法是一個顯式中斷點,所以要優先考慮回應中斷,而不是回應鎖的普通獲取或重入獲取,或者報告所用的等待時間。
Lock
中的 tryLock
timeou
- 等待讀取鎖的時間unit
- timeout 參數的時間單位
true
。
InterruptedException
- 如果當前執行緒被中斷
NullPointerException
- 如果時間單位為 nullpublic void unlock()
如果讀取者的數量目前為 0,則該鎖可用於寫入鎖嘗試。
Lock
中的 unlock
public Condition newCondition()
ReadLocks
不支持條件,所以將拋出 UnsupportedOperationException
。
Lock
中的 newCondition
Lock
實例的新 Condition
實例
UnsupportedOperationException
- 總是如此public String toString()
"Read locks ="
,後跟讀取鎖的數量。
Object
中的 toString
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。