CountDownLatch主要用来解决异步转同步的问题
public class Day1 {
static int n=0;
public static void main(String[] args) throws InterruptedException {
Thread[] threads=new Thread[100];
CountDownLatch countDownLatch=new CountDownLatch(threads.length);
for(int i=0;i<threads.length;i++){
threads[i]=new Thread(()->{
System.out.println(Thread.currentThread().getName() + " 运行");
for(int k=0;k<10000;k++)
{
synchronized (Day1.class){
n=n+1;
}
}
countDownLatch.countDown();
});
threads[i].start();
}
System.out.println("等待子线程运行结束");
countDownLatch.await(1000, TimeUnit.SECONDS);
System.out.println("子线程运行结束");
System.out.println(n);
}
}
本文展示了如何利用Java的CountDownLatch类解决异步转同步问题。通过创建一个计数为100的CountDownLatch,在100个线程完成10000次共享资源操作后,主线程等待所有子线程完成并打印最终结果。

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



