我有一種情況需要運行一些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. 線程池執行程序
- 2. python程序的執行次數限制
- 3. 限制線程池線程的數量
- 4. 線程池執行程序接受customqueue
- 5. 限制一次執行方法的線程數
- 6. 線程數與線程數限制和執行過程參數
- 7. 執行並行線程池
- 8. 限制一次運行的線程號
- 9. 速率限制執行程序(Java)中的線程數
- 10. 線程只執行一次
- 11. 如何創建多個線程池(即多個執行程序,每個線程池都有一個線程)
- 12. 限制scalatest並行執行線程號
- 13. java線程池exectur執行execute(runnable)方法一次
- 14. 限制線程池中併發線程的數量
- 15. Java線程池ExecutorService:線程執行順序
- 16. C++線程池中的線程執行順序
- 17. 控制應用程序執行次數
- 18. 執行程序關閉後,爲什麼Runnable仍然在可執行的線程池執行程序中執行?
- 19. 線程池有多個限制
- 20. 線程池 - 爲WaitAll 64句柄限制
- 21. 線程池執行順序並將未來傳遞給另一個線程
- 22. 代碼由於異常而在線程池中執行了無限次
- 23. 用聯合執行程序服務替換石英線程池
- 24. 在Scala中替換線程執行程序池
- 25. 使用執行程序的線程池Framrwork
- 26. 執行程序創建的線程池是否釋放內存?
- 27. java thead池執行程序如何處理中斷線程
- 28. jboss 6.4 EAP線程池/執行程序JNDI查找
- 29. 線程池執行程序的優化-java
- 30. 線程和塊的限制以及線程和塊的執行
你看過[ThreadPoolExecutor](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html)嗎? – bradimus
那些不是線程,那些是_tasks_。線程池使用有限數量的線程來運行無限數量的任務。 –
標題說「執行者池」。你是說當你在網上搜索類似的主題時,你沒有發現*任何文章展示瞭如何在Java中設置線程池?我覺得很難相信。這看起來更像**你沒有做任何研究**。因爲這個原因被低估了! – Andreas