我有這個(簡體)場景:的ReentrantReadWriteLock在同一線程
@Test
public void testSameThread() throws InterruptedException {
ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock();
rwlock.readLock().lock();
{
if (rwlock.writeLock().tryLock(50, TimeUnit.MILLISECONDS)) {
// long-running op
Thread.sleep(100);
rwlock.writeLock().unlock();
} else {
fail();
}
}
rwlock.readLock().unlock();
}
首先,我獲取讀鎖,然後在同一個線程我試圖獲取寫鎖。我的假設是,因爲我在同一個線程上,應該獲取寫入鎖定。
首先,我的假設有什麼問題?那麼,可以使用什麼模式(標準的Java鎖定機制)來允許對同一個線程進行任意嵌套的讀/寫鎖定?
你只是做一個假設,在這裏,你得到了它一個明確的答案,你的問題建議,當你希望有什麼不工作,請添加更多你的問題的細節,預期和觀察到的行爲是什麼?是什麼讓你說它不像你期望的那樣工作? – A4L