gpt4 book ai didi

java - 同一线程上的可重入ReadWriteLock

转载 作者:行者123 更新时间:2023-11-30 06:31:39 26 4
gpt4 key购买 nike

我有这个(简化的)场景:

@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锁定机制)来允许同一线程任意嵌套的读/写锁?

最佳答案

你的假设没有任何问题。事实上,这不是一个假设,而是一个有据可查的事实。来自ReentrantReadWriteLock.WriteLock.lock():

Acquires the write lock if neither the read nor write lock are held by another thread

如果在同一个线程上多次获取时发生阻塞,则不会是可重入的。

``事实上,毕竟没有那么详细的记录,请参阅评论部分

关于java - 同一线程上的可重入ReadWriteLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45974697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com