共計 1287 個字符,預計需要花費 4 分鐘才能閱讀完成。
在 Java 中,CountDownLatch 是一個同步輔助類,它可以讓一個或多個線程等待其他線程完成操作后再繼續執行。CountDownLatch 可以用于以下場景:
- 主線程等待多個子線程完成后再執行。
- 多個子線程等待主線程完成某個任務后再開始執行。
CountDownLatch 的使用步驟如下:
- 創建一個 CountDownLatch 對象,指定需要等待的線程數量。
- 在需要等待的線程中,調用 CountDownLatch 的 await() 方法,使線程進入等待狀態,直到計數器減為 0。
- 在其他線程執行完需要等待的任務后,調用 CountDownLatch 的 countDown() 方法,將計數器減 1。
- 如果主線程需要等待其他線程完成后再執行,可以在主線程中調用 CountDownLatch 的 await() 方法,使主線程進入等待狀態。
- 當計數器減到 0 時,所有等待的線程將被喚醒,繼續執行。
下面是一個簡單的示例代碼:
import java.util.concurrent.CountDownLatch;
public class CountDownLatchExample {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 WorkerThread(latch));
thread.start();}
try {latch.await(); // 主線程等待所有子線程執行完畢
System.out.println("All threads have finished.");
} catch (InterruptedException e) {e.printStackTrace();
}
}
}
class WorkerThread implements Runnable {
private CountDownLatch latch;
public WorkerThread(CountDownLatch latch) {this.latch = latch;}
@Override
public void run() {
// 執行需要等待的任務
System.out.println("Thread " + Thread.currentThread().getName() + " is running.");
// 任務執行完畢后,調用 countDown() 方法將計數器減 1
latch.countDown();}
}
在上面的示例代碼中,主線程創建了 5 個 WorkerThread 線程,并將 CountDownLatch 對象作為參數傳遞給它們。每個 WorkerThread 線程執行完任務后,調用 latch.countDown() 方法將計數器減 1。主線程調用 latch.await() 方法進入等待狀態,直到計數器減為 0,所有子線程執行完成。最后,主線程輸出 ”All threads have finished.”。
丸趣 TV 網 – 提供最優質的資源集合!
正文完