在java中管理线程池的队列/工作者

时间:2016-11-18 09:27:00

标签: java multithreading thread-safety threadpoolexecutor

我想管理我的线程池工作者。就像一个队列有5个工人,然后我将如何管理这些工人。假设第一个工人应该在第4个工人之后或在对工人进行一些分类后运行。

我在我的应用程序中使用ThreadPoolExecutor。它正在按预期工作,但需要管理这些工作程序,因此我的应用程序将在我对这些工作者进行排序时运 请给我一些提示或参考。

3 个答案:

答案 0 :(得分:1)

你不应该试图管理工人。您需要管理队列。

请参阅ThreadPoolExecutor and the queue以获得详细介绍。

答案 1 :(得分:0)

使用线程池的目的是从应用程序中抽象出线程管理。如果您需要自己管理线程,那么您基本上就是说要编写自己的线程池。 在这种情况下,使用Executor不会有帮助,因为你失去了这种控制水平。 相反,您可能需要自己创建和管理线程。

答案 2 :(得分:0)

您可以自己管理线程,也可以使用并发原语(如障碍,信号量等)来控制顺序。检查java.util.concurrent包。例如,第一个工人可以等待其他工人在某个时候释放的信号量或倒计时。