• 计算程序运行时间 demo


    currentTimeMillis与StopWatch 的时间差工具:

    计算时间差(天,小时,分钟)博客
    Java 实例 时间的处理demo博客

    StopWatch

    主要方法: 方法start():开始计时

    stop():停止计时

    suspend():暂停秒表

    resume():恢复秒表

    reset():重置秒表

    split():设定split点

    getSplitTime():获取时间,时间为从计时起点到最新设置的split点之间的时长

    getTime():显示当前秒表时间,可以通过指定TimeUnit来指定返回的时间单位

    import cn.hutool.core.date.StopWatch;
    
    • 1

    maven

     <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.3.2</version>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    package com.example.democrud.democurd.controller;
    
    
    //import org.apache.commons.lang.time.StopWatch;
    
    
    import cn.hutool.core.date.StopWatch;
    
    public class demoTest {
    
    
        public static void main(String[] args) throws InterruptedException {
    
    
               currentTimeMillis();
    
            //   StopWatch();//多线程适用任务
    
            StopWatch01();//多线程适用任务  多线程执行demo
    
    
        }
    
    
        private static void StopWatch01() throws InterruptedException {
            // 创建一个 StopWatch 实例
            StopWatch sw = new StopWatch("实例");
    // 开始计时
            sw.start("任务1");
    
            Thread.sleep(1000);
    
    // 停止计时
            sw.stop();
            System.out.printf("任务1耗时:%d%s.\n", sw.getLastTaskTimeMillis(), "ms");
    
            sw.start("任务2");
            Thread.sleep(1100);
            sw.stop();
    
            System.out.printf("任务2耗时:%d%s.\n", sw.getLastTaskTimeMillis(), "ms");
            System.out.printf("任务数量:%s,总耗时:%ss.\n", sw.getTaskCount(), sw.getTotalTimeSeconds());
    
    
        }
    
       /* private static void StopWatch() {
    
            try{
                StopWatch stop=new StopWatch();
                //start
                stop.start();//开始计时
                Thread.sleep(1000);
                stop.split();//设置split点
                System.out.println("1==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                Thread.sleep(500);
                stop.split();//设置split点
                System.out.println("2==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                Thread.sleep(1000);
                stop.split();//设置split点
                System.out.println("3==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                Thread.sleep(1000);
                stop.split();//设置split点
                System.out.println("4==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                System.out.println("5==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
                //stop
                stop.stop();//停止计时
                Thread.sleep(1000);
                System.out.println("6==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }*/
    
    
        private static void currentTimeMillis() {
            long startTime = System.currentTimeMillis();
    
            try {
                Thread.sleep(10000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
           long endTime = System.currentTimeMillis();
    
            System.out.println("Main 运行时间 :" + (endTime-startTime)/1000+"秒");
        }
    
    
    }
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94

    执行结果是:

    Main 运行时间 :10秒
    任务1耗时:999ms.
    任务2耗时:1099ms.
    任务数量:2,总耗时:2.098904701s.
    
    Process finished with exit code 0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    还有一个是引用的包不同调用的方法;

    import org.apache.commons.lang.time.StopWatch;
    
    • 1
    package com.example.democrud.democurd.controller;
    
    
    import org.apache.commons.lang.time.StopWatch;
    
    
    //import cn.hutool.core.date.StopWatch;
    
    public class demoTest {
    
    
        public static void main(String[] args) throws InterruptedException {
    
    
             //  currentTimeMillis();
    
               StopWatch();//多线程适用任务
    
          //  StopWatch01();//多线程适用任务  多线程执行demo
    
    
        }
    
    
    
    
        private static void StopWatch() {
    
            try{
                StopWatch stop=new StopWatch();
                //start
                stop.start();//开始计时
                Thread.sleep(1000);
                stop.split();//设置split点
                System.out.println("1==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                Thread.sleep(500);
                stop.split();//设置split点
                System.out.println("2==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                Thread.sleep(1000);
                stop.split();//设置split点
                System.out.println("3==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                Thread.sleep(1000);
                stop.split();//设置split点
                System.out.println("4==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
                System.out.println("5==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
                //stop
                stop.stop();//停止计时
                Thread.sleep(1000);
                System.out.println("6==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
    
    
    }
    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    执行结果是

    1==>时间为1001毫秒
    2==>时间为1502毫秒
    3==>时间为2502毫秒
    4==>时间为3503毫秒
    5==>时间为3503毫秒
    6==>时间为3503毫秒
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明
    Pytest 源码解读 [1] - [pluggy] 核心设计理念浅读
    单链表的基本操作
    java毕业设计——基于java+J2EE+Hibernate的校园二手交易网站设计与实现(毕业论文+程序源码)——二手交易网站
    记一次使用Spring注解@Scheduled出现的事故
    DBCP 与 C3P0连接池
    MySQL 高级(进阶) SQL 语句 (一)
    《代码大全2》第14章 组织直线型代码
    【Spring】之 SpringAOP 理论与实践
    “AI教父”Geoffrey Hinton:智能进化的下一个阶段
  • 原文地址:https://blog.csdn.net/qq_42055933/article/details/126015001