2013-06-02 97 views
0

據我所知,線程池(java.util.concurrent.Executor類)爲池中的所有線程提供一個任務隊列。所以我不知道,哪個線程將執行我的任務。但我需要分配給每個線程的任務隊列。我該怎麼做?線程池中每個線程的隊列

+3

爲什麼你關心哪個線程執行一個特定的任務,只要工作最終完成? – fge

回答

1

如果您只想要某些線程執行特定任務,那麼標準線程池將不適合。 但是你可以使用多個線程池,每個線程只有一個線程來解決你的問題。

1

您應該編寫程序,以便不需要知道哪個線程執行任務。他們只是匿名工作者線程。

但是,如果您確實想知道無論如何,您可以爲每個想要的線程創建單線程ExecutorService,然後您將知道哪個線程將執行任務。

+0

你是對的,但是在我的程序中,所有輸入都按特殊順序在工作人員之間分開,這就是爲什麼當我得到新輸入時,我決定由哪個工作人員執行它,然後將此輸入放入他的線程中。我明白,這真的不是一個好主意。我會盡量避免這個陷阱。感謝您的回答。 – notnavol

+0

@notnavol我會小心使用這種方式分割輸入。如果你把它切得太細,那麼最終可能會得到一個解決方案,其開銷是你正在執行的工作的10倍(甚至更多)。這可以使多線程解決方案比單線程解決方案慢得多。 –