當我們使用Java的Executor服務創建一個線程池並向這個線程池提交線程時,這些線程的執行順序是什麼?Java線程池ExecutorService:線程執行順序
我想確保線程先提交,先執行。 例如,在下面的代碼,我想先5個線程會首先執行,然後是下一個5個線程等等...
// Create a thread pool of 5 threads.
ScheduledExecutorService exService = Executors.newScheduledThreadPool(5, new ModifiedThreadFactory("ReadThreadPool"));
// Create 100 threads.
MyThread[] threads = createMyThreads(100);
// Submit these 100 threads to thread pool for execution.
for(MyThread thread : threads) {
exService.submit(thread);
}
確實Java的線程池用於這一目的提供任何API,或我們是否需要在我們的末端實現一個FIFO隊列來實現這一點。 如果Java的線程池不提供任何這樣的功能,我真的有興趣瞭解這個功能不存在的原因,因爲它看起來像是一個非常常見的用例。 技術上不可能(我認爲這不太可能),還是僅僅是一個小姐?
哥們這是寫在該類 –
的Javadoc,我希望那些'MyThread'對象只是名不副實,並沒有真正延伸' java.lang.Thread'。他們應該是'Runnable'任務。執行者會給他們一個線程來執行。 ('Thread'實現'Runnable'這個事實是一個歷史性的錯誤。) – Boann