首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待读锁定的读和写锁定线程

等待读锁定的读和写锁定线程
EN

Stack Overflow用户
提问于 2015-03-21 02:09:46
回答 1查看 486关注 0票数 1

我有一个多线程程序,其中我创建了一个公平值为true的ReadWriteLock实例。此应用程序已停止响应。

下面是我们基于线程转储的发现。一个线程获取了读锁,并在执行过程中阻塞了DB操作。它很长一段时间都没有释放锁。

除了上面的线程,还有另外三个线程。一个线程正在等待获取写锁。然而,另外两个线程正在等待获取读锁。

问题是为什么有两个线程在等待读锁?这是不是因为公平值为真,请求写锁的线程比请求读锁的两个线程来得早?如果请求写入的线程较早到达,系统会阻止请求读锁定的线程吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-21 02:40:39

当您将Java ReentrantReadWriteLock的公平值设置为true时,如果当前有一个线程正在等待获取写锁,那么获取读锁的尝试将会阻塞。在Javadoc中:

如果持有写锁定,或者存在等待的写入线程,则尝试获取公平读锁定(非重入)的线程将阻塞。

在您的情况下,一旦当前读取完成,等待写入的线程将被允许写入,然后等待读取的其他线程将被允许读取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29173120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档