java CountDownLatch
CountDownLatch是用于线程同步的工具类,主要作用是让当前线程等待其他线程完成操作后再继续执行。 示例代码:
import java.util.concurrent.CountDownLatch;private static void testCountDownLatch() {int taskNum = 5;CountDownLatch latch = new CountDownLatch(taskNum); // 初始化计数器值for (int i = 0; i < taskNum; i++) {int finalI = i;new Thread(() -> {System.out.println("线程 " + finalI + "执行完成");latch.countDown(); // 计数器减1,当减至0时唤醒等待线程}).start();}try {System.out.println("当前线程:" + Thread.currentThread().getName() + " 等待中(即等待上述线程执行完毕)");latch.await(); // 阻塞当前线程直到计数器归零} catch (InterruptedException e) {e.printStackTrace();}System.out.println("所有线程执行完毕, 当前线程:" + Thread.currentThread().getName() + " 继续执行");}
打印:
ok. 注意CountDownLatch不能重复使用,如需重复使用应考虑CyclicBarrier。