Spring 计时器StopWatch

背景

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

实例代码

复制代码
package cn.zzg.mybatisplus.controller;

import cn.zzg.mybatisplus.entity.BaseProjectPO;
import org.springframework.util.StopWatch;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/stopWatch")
public class StopWatchController {
    @GetMapping("/test")
    public void test() throws InterruptedException {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start("getUp");
        Thread.sleep(2000);
        stopWatch.stop();

        stopWatch.start("washUp");
        Thread.sleep(4000);
        stopWatch.stop();

        stopWatch.start("closeDoor");
        Thread.sleep(60000);
        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());

    }

}

运行结果

复制代码
StopWatch '': running time (millis) = 66016
-----------------------------------------
ms     %     Task name
-----------------------------------------
02004  003%  getUp
04001  006%  washUp
60011  091%  closeDoor

66016
closeDoor
org.springframework.util.StopWatch$TaskInfo@7cdb0296
3
相关推荐
守护者1706 分钟前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习
余道各努力,千里自同风11 分钟前
CSS“多列布局”
前端·css·html
bing_15817 分钟前
Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
java·spring boot·后端
Keya17 分钟前
使用 tinypng 脚本打包为exe 进行压缩图片
前端·python·程序员
ergdfhgerty19 分钟前
斐讯N1部署Armbian与CasaOS实现远程存储管理
java·docker
wordbaby23 分钟前
React Router 的 handle 和 useMatches 的作用、场景和联系
前端·react.js
我的div丢了肿么办23 分钟前
ResizeObserver和IntersectionObserver的详细讲解
前端·javascript·vue.js
凌览24 分钟前
斩获 7k Star,这个桌宠项目火了🔥
前端·javascript·后端
opbr24 分钟前
🔥 扔掉虚拟DOM!百行代码实现高性能Vue内核,直接操作DOM竟这么香?
前端
Struggler28130 分钟前
cloudflare r2进行cdn加速
前端