Spring StopWatch的用法

泪湿孤枕 提交于 2019-12-04 06:42:47

有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的Java类,如下:

public class TestStopWatch {

    private void test() throws InterruptedException {

        StopWatch stopWatch = new StopWatch("程序流程耗时统计");

        stopWatch.start("查询数据");
        System.out.println("查询操作=====");
        Thread.sleep(1000);
        stopWatch.stop();

        stopWatch.start("新增数据");
        System.out.println("新增操作=====");
        Thread.sleep(2000);
        stopWatch.stop();

        stopWatch.start("发起远程调用");
        System.out.println("远程调用服务====");
        Thread.sleep(3000);
        stopWatch.stop();

        System.out.println(stopWatch.prettyPrint());
        System.out.println(stopWatch.getTotalTimeMillis());
        System.out.println(stopWatch.getLastTaskName());
        System.out.println(stopWatch.getLastTaskInfo());
        System.out.println(stopWatch.getTaskCount());
    }

    public static void main(String[] args) throws InterruptedException {
        TestStopWatch testStopWatch = new TestStopWatch();
        testStopWatch.test();
    }
}

结果:

查询操作=====
新增操作=====
远程调用服务====
StopWatch '程序流程耗时统计': running time (millis) = 6011
-----------------------------------------
ms     %     Task name
-----------------------------------------
01009  017%  查询数据
02001  033%  新增数据
03001  050%  发起远程调用

6011
发起远程调用
org.springframework.util.StopWatch$TaskInfo@66a29884
3

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!