簡體   English   中英

如何從Java中的100個線程一次運行10個線程?

[英]How do I run 10 threads at a time from 100 threads in Java?

我正在使用Java 6。

假設我創建了100個線程,每個線程完成一項任務。 我想連續一次運行10個線程。 這意味着如果我正在運行線程1-10,並且線程8完成,我希望能夠立即啟動線程11,而無需等待1-10加入。

我怎樣才能做到這一點?

解決這個問題的一種方法可能是使用isAlive()方法,但我想知道如果沒有輪詢我是否可以這樣做。

謝謝。

你為什么要這么做?

更好的方法是創建一個包含10個線程的池並向其提交100個任務。 它將具有完全相同的效果 - 100個任務中的10個同時運行。

ExecutorService pool = Executors.newFixedThreadPool(10);

for (int i = 0; i < 100; i++)
    pool.submit(...);

使用帶有10個線程的ExecutorService線程池來提交任務。 你總結的任何工作都將以q Queue結束,10個線程將從中執行你的1000個工作。

當你說“一次”時,談論並發是令人困惑的。 如果使用線程池大小為10的ExecuterService,則將啟用100個線程中的10個執行。 但請記住,如果您只有1個CPU,並且其中一個線程具有更高的優先級,則所有其他線程可能保持等待狀態。 我的建議是根據可用的CPU數來調整你的數字線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM