package thread;
import java.util.concurrent.CountDownLatch;
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
CountDownLatch startSignal = new CountDownLatch(1);
CountDownLatch doneSignal = new CountDownLatch(10);
for (int i = 0; i < 10; ++i) // create and start threads
new Thread(new Worker(startSignal, doneSignal)).start();
startSignal.countDown(); // let all threads proceed
doSomethingElse1();
doneSignal.await(); // wait
doSomethingElse2();
}
public static void doSomethingElse1(){
System.out.println("doing1...");
}
public static void doSomethingElse2(){
System.out.println("doing2...");
}
}
class Worker implements Runnable {
private final CountDownLatch startSignal;
private final CountDownLatch doneSignal;
Worker(CountDownLatch startSignal, CountDownLatch doneSignal) {
this.startSignal = startSignal;
this.doneSignal = doneSignal;
}
public void run() {
try {
startSignal.await();
doWork();
doneSignal.countDown();
} catch (InterruptedException ex) {} // return;
}
void doWork() { System.out.println("working......");}
}
CountDownLatch一个简单Demo
最新推荐文章于 2024-03-06 23:14:12 发布
本文介绍了一个使用 Java 并发工具 CountDownLatch 的示例程序。该程序创建了 10 个 Worker 线程,通过 CountDownLatch 控制线程同步,确保所有线程在开始工作前等待主线程信号,并在完成任务后通知主线程。
481

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



