[英]In java, how to process items off a bounded queue with at most N threads, with adjustable N?
[英]Running at most n Java threads
我有一個CPU密集型應用程序,可以用Java編寫。 該應用程序由幾個獨立運行的作業(線程)組成。
如果我一次啟動所有線程,系統將被重載。 我怎么能一次啟動最多n個線程,當一個線程完成然后啟動一個新線程? 通過限制一次運行的線程數,我打算讓其他一些處理器/內核可用於其他任務。
謝謝
您應該將線程的任務表示為Runnable
或Callable
,然后將它們提交給固定的線程池執行程序。 執行程序將管理工作線程池並從這些線程上的內部隊列運行您的任務。
請參閱Executors#newFixedThreadPool以獲取創建所需執行程序類型的工廠方法。
使用固定大小的執行程序池。
ExecutorService executor = Executors.newFixedThreadPool(4);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.