zoukankan      html  css  js  c++  java
  • 利用同步辅助类CountDownLatch计算多线程的运行时间

    一、CountDownLatch

      jdk提供的一个同步辅助类,在完成一组在在其他线程中执行的操作前,允许一个或者多个其他的线程等待,通过调用 await() 方法阻塞,直到由于 countDown() 方法的调用而导致当前计数达到零,之后所有等待线程被释放。

    二、计算多个线程执行时间

    package com.example.demo.juc;
    
    import java.util.concurrent.CountDownLatch;
    
    /**
     * @author DUCHONG
     * @since 2019-01-17 14:18
     **/
    public class LatchTest {
    
        public static void main(String[] args) {
    
            Long startTime=System.currentTimeMillis();
            CountDownLatch countDownLatch=new CountDownLatch(5);
            LatchThread latchThread=new LatchThread(countDownLatch);
    
            for(int j=1;j<=5;j++){
                new Thread(latchThread,"thread"+j).start();
            }
    
            try {
                countDownLatch.await();
            }
            catch (InterruptedException e) {
                e.printStackTrace();
            }
            Long endTime=System.currentTimeMillis();
    
            System.out.println("over 耗时:"+(endTime-startTime));
        }
    
    }
    
    class LatchThread implements  Runnable{
    
        private CountDownLatch latch;
        public LatchThread(CountDownLatch l) {
            latch=l;
        }
    
        @Override
        public void run() {
            synchronized (this) {
                try {
                    for (int i = 0; i < 100; i++) {
                        if (i % 2 == 0) {
                            System.out.println(Thread.currentThread().getName() + "----" + i);
                        }
                    }
                }
                finally {
                    latch.countDown();
                }
            }
        }
    }
    
  • 相关阅读:
    (参考)爬虫5-爬取中国大学排名情况
    005_软件安装之_常用办公软件
    004_软件安装之_Altium Designer
    001_基础硬件电路_二极管
    添加QQ群
    024_STM32程序移植之_ESP8266_TCP
    020_C语言常用函数
    004——转载C#禁止改变窗体大小
    003转载----C#打开网页
    002_Python基础学习网站
  • 原文地址:https://www.cnblogs.com/geekdc/p/10282177.html
Copyright © 2011-2022 走看看