【发布时间】:2015-04-10 12:32:26
【问题描述】:
我有一个问题,我有一个数据结构和多个线程试图对其进行操作。说得尽量简单:我有线程A、B和C。线程A只能做它的操作,只要B和C不对数据集做任何改变。不过,B 和 C 可以在大部分时间同时在片场工作。所以目标是:
- 线程 A 阻塞 B 和 C
- 线程 B 和 C 块 A
- 线程 B 不会阻塞 C(反之亦然)
问题是,我怎样才能做到这一点? 我希望很清楚我要做什么。如果没有,请随时发表评论。我故意不提供任何代码,因为我认为这样更容易理解问题(很多长代码)。
【问题讨论】:
-
你总是会同时拥有 3 个线程,还是有多个线程? @菲尔
-
@TimoH 大多数时候会有超过 3 个线程。例如 1 个线程执行 A 操作,9 个线程执行 B 或 C 操作。这意味着总会有 1 个像 A 一样的线程,只有在没有其他线程在运行时才能运行,但可以有任意数量的其他线程,它们可以并行运行。
-
我猜你需要另一个类作为信号量来帮助协调线程何时应该处理。
标签: java multithreading concurrency locking