簡體   English   中英

如何等待所有線程(可變數量的線程)完成繼續使用Main?

[英]How to wait for all threads (variable number of threads) to finish to move on with Main?

我將根據for循環中的用戶輸入創建多個線程。 因此我無法為它們指定名稱。 有沒有辦法等待所有人完成繼續我的主線程? 我想讓他們完成那個for循環。 我知道我需要使用連接但是有很多線程,我將如何使用它? 或者還有另一種方式嗎? 它會是這樣的:

for(int i = 0; i<inputs.size(); i++)
  new SimpleThread(parameters).start();

繼續只有主線程,其他人完成。

我怎樣才能做到這一點?

將線程存儲在List<Thread> ,然后迭代列表並使用thread.join()

您還可以查看java.util.concurrent aids。 CyclicBarrierCountDownLatch (如其他人所示)。

使用java.util.concurrent.CountDownLatch 將其與參數一起傳遞。

還可以考慮使用java.util.concurrent.Executors.newFixedThreadPool()來管理線程生命周期(啟動,停止線程)。

在主線程中創建倒計時鎖存器,傳遞給您生成的線程: http//download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html

暫無
暫無

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

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