CountDownLatch想一个阀门一样们等待多有的线程结束了,才会向下进行,
下面代码,只有准备线程准备好可(startDownLatch 计数为0的时候才会执行work线程),await()方法就是等待计数为0,
countDown()方法就是计数减一,使用很简单,
public class TestClass {
public static void main(String[] args) {
CountDownLatch startDownLatch = new CountDownLatch(1);
CountDownLatch endDownLatch = new CountDownLatch(4);
new Thread(new Work(startDownLatch,endDownLatch)).start();
new Thread(new Work(startDownLatch,endDownLatch)).start();
new Thread(new Work(startDownLatch,endDownLatch)).start();
new Thread(new Work(startDownLatch,endDownLatch)).start();
System.out.println("准备线程!");
startDownLatch.countDown();
try {
endDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("运行结束");
}
}
class Work implements Runnable {
private CountDownLatch startCount;
private CountDownLatch endCount;
Work(CountDownLatch startCount,CountDownLatch endCount){
this.startCount = startCount;
this.endCount = endCount;
}
@Override
public void run() {
try {
startCount.await();
System.out.println("work!!!!");
endCount.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

本文介绍了一个简单的 Java 多线程示例,通过 CountDownLatch 控制多个工作线程的同步执行。示例中创建了四个工作线程,在主线程启动这些工作线程后,通过 CountDownLatch 的 countDown 方法来通知工作线程开始执行,并使用 await 方法确保所有工作线程完成后再继续主线程的后续操作。
481

被折叠的 条评论
为什么被折叠?



