是否可以选择特定线程在java中的线程池中运行类似的任务?

时间:2021-07-14 13:13:11

标签: java

例如,我有 8 个线程的线程池,我希望池中的线程 1 运行 4 个类似的任务,池中的线程 2 运行其他 4 个任务,依此类推

1 个答案:

答案 0 :(得分:2)

<块引用>

java中是否可以选择特定的线程在线程池中运行类似的任务?

没有。至少,不使用任何标准的 Java SE ExecutorService 实现。

当然,您可以从头开始实现您自己的线程池,以您选择的任何方式将计划任务到池中的线程。只是编写、调试和维护很多复杂的代码。


你想要这个的原因在我看来是人为的。 (好像是 XY problem。)

<块引用>

.... 因为我想根据线程名称执行不同的操作。

还有其他方法可以实现该目标:

  • 您可以使用 ThreadLocal 来存储名义名称,并在任务开始时对其进行设置。
  • 您的任务可以在启动时在当前线程上调用 Thread.setName()1
  • 您可以将名义名称存储在任务对象的变量中。
  • 您可以只使用多个线程池,然后根据您要执行的操作提交给不同的线程池。

请注意,通过将特定任务调度到单个命名线程,您将为这些任务创建并发瓶颈。


1 - IMO,这个特定的选项很糟糕......