import java.util.concurrent.CountDownLatch;
/**
*并发工具类CountDownLatch
*/
public class UseCountDownLatch {
static CountDownLatch latch = new CountDownLatch(3);
//初始化线程
private static class InitThread implements Runnable{
@Override
public void run() {
System.out.println("Thread_"+Thread.currentThread().getId()
+" ready init work......");
latch.countDown();//初始化线程完成工作了,countDown方法只扣减一次;
for(int i =0;i<2;i++) {
System.out.println("Thread_"+Thread.currentThread().getId()
+" ........continue do its work");
}
}
}
//业务线程
private static class BusiThread implements Runnable{
@Override
public void run() {
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i =0;i<3;i++) {
System.out.println("BusiThread_"+Thread.currentThread().getId()
+" do business-----");
}
}
}
public static void main(String[] args) throws InterruptedException {
new Thread(new BusiThread()).start();
for(int i=0;i<3;i++){
Thread thread = new Thread(new InitThread());
thread.start();
}
latch.await();
System.out.println("Main do its work........");
}
}
并发工具类CountDownLatch
最新推荐文章于 2025-05-16 09:28:05 发布
本文介绍了一个使用Java的CountDownLatch类实现的并发控制示例。CountDownLatch允许一个或多个线程等待其他线程完成操作。通过两个不同的线程类,InitThread和BusiThread,演示了CountDownLatch的基本用法。InitThread类用于模拟初始化线程,完成准备工作后调用countDown()方法。BusiThread类则在所有初始化线程完成前被阻塞,之后执行业务逻辑。
197

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



