java - 可重入ReadWriteLock限制

标签 java multithreading locking reentrantlock

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

最佳答案

限制为 65535 个锁,因此您似乎不太可能使用 20 个线程达到该限制。 (虽然可能,但该限制确实会计算可重入的获取。但是,违反该限制会导致抛出错误,而不是 tryLock() 的错误返回值。)

更有可能的是,您正处于系统足够繁忙的时刻,以至于当您尝试 tryLock() 时,锁不太可能在该时刻可用。您可能应该切换到一个具有合理超时阻塞的调用,以便线程等待,直到其他线程完成并且锁变得可用。

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

相关文章:

java - 如何模拟 Rest Template 的 getForEntity() 方法

java - 在 Java 中为生产者/消费者模式创建同步缓冲区

mysql - SELECT ... FOR UPDATE 是否应该始终包含 ORDER BY?

python - Postgresql 表的 SQLalchemy 显式锁定

java - 使用同步方法而不是同步块(synchronized block)有优势吗?

java - 如何实现多类应用

java - 使用java布局定义容器最小尺寸

java - 将 XML 文件中的子节点拆分为自己的 XML 文件

java - future 取消不适用于多线程的 executorService

java - 如何为一系列任务设计执行引擎