【问题标题】:Manage queue/workers of Thread pool in java在java中管理线程池的队列/工作者
【发布时间】:2016-11-18 09:26:59
【问题描述】:
我想管理我的线程池工作者。就像一个队列有 5 个工人,那么我将如何管理这些工人。假设第一个工人应该在第四个工人之后或在一些工人之后运行。
我在我的应用程序中使用 ThreadPoolExecutor。它按预期工作,但需要管理这些工作人员,以便我的应用程序在我对这些工作人员进行排序时运行。
请给我一些提示或参考。
【问题讨论】:
标签:
java
multithreading
thread-safety
threadpoolexecutor
【解决方案2】:
使用线程池的目的是从应用程序中抽象出线程管理。如果您需要自己管理线程,则基本上是在声明您要编写自己的线程池。
在这种情况下,使用 Executor 将无济于事,因为您失去了那种程度的控制。
相反,您可能需要自己创建和管理线程。
【解决方案3】:
您可以自己管理线程,也可以使用诸如屏障、信号量等并发原语来控制顺序。检查 java.util.concurrent 包。例如,第一个工作人员可以等待其他工作人员在某个时间释放的信号量或倒计时。