java - 让线程 A 阻塞 B & C,反之亦然,但不让线程 B 阻塞线程 C,反之亦然?

标签 java multithreading concurrency locking

我有一个问题,我有一个数据结构和多个线程试图对其进行操作。说得越简单越好:我有线程A、B和C,线程A只能做它的操作,只要B和C不对数据集做任何改变。 B 和 C 大部分时间都可以同时在设备上操作。所以目标是:

  • 线程 A 阻塞 B 和 C
  • 线程 B 和 C block A
  • 线程 B 不会阻塞 C(反之亦然)

问题是,我怎样才能做到这一点? 我希望很清楚我想做什么。如果没有,请随时发表评论。我故意没有提供任何代码,因为我认为这样更容易理解问题(很多长代码)。

最佳答案

您可以使用 ReentrantReadWriteLock

关于java - 让线程 A 阻塞 B & C,反之亦然,但不让线程 B 阻塞线程 C,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561553/

相关文章:

java - EJB 容器中的 ThreadLocal(和 Singleton)

android - 在安卓应用中等待

java - 检测是否从上一个 Activity 中按下了后退按钮

java - 应用程序在服务器中启动时 printStackTrace() 日志的位置

java - 石头剪刀布类使用不同的方法

JavaFX - 并发和更新标签

bash - bash 脚本函数中的并发或锁定访问

java - 当@ActiveProfiles ("test"时,如何忽略特定方法的 spring @Transactional 注释)

.net - .net 中的异步套接字是无线程的吗?

java - ArrayBlockingQueue - 如何 "interrupt"正在等待 .take() 方法的线程