多线程测试时的辅助类--CountDownLatch

多线程时,很多时候由于mian线程与多线程结束时间不可控,造成无法测试

辅助测试类---CountDownLatch

我看的视频教程匿名内部类无法使用外部的变量,所以CountDownLatch定义为了final,但是我现在jdk12似乎没问题

/**
 * 多线程环境下运用CountDownLatch测试五种模式
 * @author 小帆敲代码
 *
 */
public class Test02 {
  public static void main(String[] args) throws Exception {
   long start =System.currentTimeMillis();
     int threadNum=10;
   CountDownLatch countDownLatch=new CountDownLatch(threadNum);
   
   for(int i=0;i<10;i++) {

//lambda
//   new Thread(()-> {
//    for(int j=0;j<100000;j++) {
////     Object o=Demo04.getInstance();
//     Object o=Demo05.INSTANCE;
//    }
//    countDownLatch.countDown();//计数-1
//   }).start();
//   }
    new Thread(new Runnable() {
     @Override
     public void run() {
      for(int j=0;j<100000;j++) {
//      Object o=Demo04.getInstance();
       Object o=Demo05.INSTANCE;
      }
      countDownLatch.countDown();//计数-1
     }
    }).start();
    }
   
   countDownLatch.await();//mian线程阻塞直至计数为0
   long end =System.currentTimeMillis();
   System.out.println("共计:"+(end-start));
  }
}

 

上一篇:CountDownLatch和CyclicBarrier理论上的区别


下一篇:多线程等待任务结束的几种方法