Fork me on GitHub

java拓展----CountDownLatch同步辅助类

同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一
个或多个线程一直等待。

countDown()当前线程调此方法,则计数减一(建议放在finally里执
• await(), 调用此方法会一直阻塞当前线程,直到计时器的值为0

一下是CountDownLatch同步辅助类的使用Demo:

复制代码
 1 package com.demo.singleton;
 2 
 3 import java.util.concurrent.CountDownLatch;
 4 
 5 /**
 6  *CountDownLatch是一个同步辅助类,用于开线程进行方法的性能测试。
 7  */
 8 public class CountDownLatchTest {
 9     public static void main(String[] args) throws InterruptedException {
10         //定义一个计数常量count
11         int count = 10;
12         //创建一个同步辅助对象
13         final CountDownLatch countDownLatch = new CountDownLatch(count);
14         //记录起始时间
15         long l1 = System.currentTimeMillis();
16         //循环创建线程
17         for(int i=0;i<count;i++){
18             new Thread(new Runnable() {
19                 @Override
20                 public void run() {
21                     for(int i =0;i<1000000000;i++){
22                         try {
23                             Singleton2.getSingleton();
24                         } catch (Exception e) {
25                             e.printStackTrace();
26                         }
27                     }
28                     //每单一个线程执行结束,计数器就减一
29                     countDownLatch.countDown();
30                 }
31             }).start();
32         }
33         //主线程等待,知道计数器为0
34         countDownLatch.await();
35         long l2 = System.currentTimeMillis();
36         System.out.println("最后执行时间:"+(l2-l1));
37     }
38 }
复制代码

 

posted @   Banana_Fish  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示