Java中可以使用CountDownLatch類來等待多個線程結束。
CountDownLatch類是Java提供的一個同步輔助類,它可以使一個或多個線程等待其他線程完成操作后再繼續執行。
具體步驟如下:
示例代碼如下:
import java.util.concurrent.CountDownLatch;
public class WaitMultipleThreads {
public static void main(String[] args) {
int threadCount = 5;
CountDownLatch latch = new CountDownLatch(threadCount);
for (int i = 0; i < threadCount; i++) {
Thread thread = new Thread(new MyRunnable(latch));
thread.start();
}
try {
latch.await(); // 等待所有線程執行完成
System.out.println("All threads have finished.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
static class MyRunnable implements Runnable {
private final CountDownLatch latch;
public MyRunnable(CountDownLatch latch) {
this.latch = latch;
}
@Override
public void run() {
// 線程操作邏輯
// ...
latch.countDown(); // 線程執行完畢,計數器減1
}
}
}
在這個示例中,首先創建了一個CountDownLatch對象,并將計數器初始化為5。然后通過一個循環創建了5個線程,并將CountDownLatch對象作為參數傳遞給每個線程的構造函數。
在每個線程的run()方法中,執行線程操作的邏輯,并在最后調用latch.countDown()方法將計數器減1。
最后,在主線程中調用latch.await()方法,等待所有線程執行完成。當計數器為0時,主線程恢復執行,輸出"All threads have finished"。