我有一種情況需要運行一些10,000個線程。顯然,一臺機器不能並行運行多個線程。有什麼辦法可以讓線程池在開始時運行一些特定數量的線程,只要一個線程完成,剩下的線程就可以開始處理了?一次執行程序池限制線程數
回答
Executors.newFixedThreadPool(nThreads)
是最有可能的你正在尋找。只有指定的線程數量一次可以運行多少個線程。是的,一臺機器不能同時運行10,000個線程,但它可以同時運行它們。根據每個線程的資源密集程度,在使用 Executors.newCachedThreadPool()
時,可能會更高效,其中根據需要創建多個線程,並且已完成的線程將被重用。
對於此用例。你可以有一個帶有阻塞隊列的ThreadPollExecuter。 http://howtodoinjava.com/core-java/multi-threading/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/本教程很好地解釋了這一點。
聽起來你想在一組線程上運行10,000個任務。一個相對簡單的方法是創建一個List,然後將所有任務添加到列表中,並將它們包裝到Runnable中。然後,創建一個在構造函數中使用列表的類,並彈出列表的Runnable,然後運行它。此活動必須以某種方式進行同步。當列表爲空時,類將退出。使用這個類開始一些線程數。他們會燒掉名單然後停下來。您的主線程可以監視列表的長度。
該類已經存在。它被稱爲'java.util.concurrent.ThreadPoolExecutor'。 –
- 1. python程序的執行次數限制
- 2. 限制線程池線程的數量
- 3. 限制一次執行方法的線程數
- 4. 線程數與線程數限制和執行過程參數
- 5. 執行並行線程池
- 6. 如何創建多個線程池(即多個執行程序,每個線程池都有一個線程)
- 7. 限制scalatest並行執行線程號
- 8. java線程池exectur執行execute(runnable)方法一次
- 9. C++線程池中的線程執行順序
- 10. 控制應用程序執行次數
- 11. 執行程序關閉後,爲什麼Runnable仍然在可執行的線程池執行程序中執行?
- 12. 線程池有多個限制
- 13. 線程池 - 爲WaitAll 64句柄限制
- 14. 代碼由於異常而在線程池中執行了無限次
- 15. 在Scala中替換線程執行程序池
- 16. 使用執行程序的線程池Framrwork
- 17. 執行程序創建的線程池是否釋放內存?
- 18. 用聯合執行程序服務替換石英線程池
- 19. java thead池執行程序如何處理中斷線程
- 20. jboss 6.4 EAP線程池/執行程序JNDI查找
- 21. 在多線程C#程序中執行一次初始化
- 22. 的Java執行器服務線程池
- 23. 線程池執行延遲疑問
- 24. 如何限制Java程序執行N次
- 25. 帶線程池執行程序的壓力測試應用程序
- 26. 你可以選擇線程池中的線程來執行(boost)
- 27. 在C#中的線程池類管理線程執行
- 28. Java,多個線程,每次只執行一個線程
- 29. 一種線程池
- 30. 限制子進程一次運行的進程數.Popen
你看過[ThreadPoolExecutor](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html)嗎? – bradimus
那些不是線程,那些是_tasks_。線程池使用有限數量的線程來運行無限數量的任務。 –
標題說「執行者池」。你是說當你在網上搜索類似的主題時,你沒有發現*任何文章展示瞭如何在Java中設置線程池?我覺得很難相信。這看起來更像**你沒有做任何研究**。因爲這個原因被低估了! – Andreas