2013-06-02 59 views
0

据我所知,线程池(java.util.concurrent.Executor类)为池中的所有线程提供一个任务队列。所以我不知道,哪个线程将执行我的任务。但我需要分配给每个线程的任务队列。我该怎么做?线程池中每个线程的队列

+3

为什么你关心哪个线程执行一个特定的任务,只要工作最终完成? – fge

回答

1

如果您只想要某些线程执行特定任务,那么标准线程池将不适合。 但是你可以使用多个线程池,每个线程只有一个线程来解决你的问题。

1

您应该编写程序,以便不需要知道哪个线程执行任务。他们只是匿名工作者线程。

但是,如果您确实想知道无论如何,您可以为每个想要的线程创建单线程ExecutorService,然后您将知道哪个线程将执行任务。

+0

你是对的,但是在我的程序中,所有输入都按特殊顺序在工作人员之间分开,这就是为什么当我得到新输入时,我决定由哪个工作人员执行它,然后将此输入放入他的线程中。我明白,这真的不是一个好主意。我会尽量避免这个陷阱。感谢您的回答。 – notnavol

+0

@notnavol我会小心使用这种方式分割输入。如果你把它切得太细,那么最终可能会得到一个解决方案,其开销是你正在执行的工作的10倍(甚至更多)。这可以使多线程解决方案比单线程解决方案慢得多。 –