首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReentrantReadWriteLock限制

ReentrantReadWriteLock限制
EN

Stack Overflow用户
提问于 2014-04-25 05:02:26
回答 2查看 509关注 0票数 1

ReentrantReadWriteLock有限制吗?我现在正在测试我的应用程序,当我在20个线程时,我的写锁似乎不再释放锁(返回true:tryLock())。

EN

回答 2

Stack Overflow用户

发布于 2014-04-25 05:10:01

限制是65535个锁,所以看起来你不太可能在20个线程中达到它。(虽然有可能,但这一限制确实计入了重新进入的收购。但是,违反它会导致抛出错误,而不是从tryLock()返回false返回值。)

更有可能的情况是,当您尝试tryLock()时,系统已经足够繁忙,不太可能出现锁可用的情况。您可能应该切换到使用合理的超时阻塞的调用,以便线程等待,直到其他调用完成,锁变为可用。

票数 2
EN

Stack Overflow用户

发布于 2014-04-25 05:07:42

当我有20个线程时,使用

(返回真: tryLock())。

除非您有20个CPU,否则这些线程不会同时运行,并且正在运行的线程很可能会将未运行的线程排除在外。如果您需要避免这种情况,则必须使用公平锁。

一个更好的解决方案是不要在任何锁上都存在严重争用的地方编写代码。

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

https://stackoverflow.com/questions/23279744

复制
相关文章

相似问题

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