【发布时间】:2017-08-31 06:31:35
【问题描述】:
我有这个(简化的)场景:
@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锁机制)可以用来允许同一个线程任意嵌套读/写锁呢?
【问题讨论】:
-
您只是在这里做一个假设并且您得到了明确的答案,您的问题表明某些事情没有按您预期的那样工作,请在您的问题中添加更多详细信息,预期和观察到的行为?是什么让您说它没有按预期工作?
标签: java multithreading