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
相关推荐
李李李勃谦几秒前
鸿蒙PC配色方案工具:取色、配色生成与 CSS 导出
前端·css·华为·harmonyos
上弦月-编程13 分钟前
C语言指针超详细教程——从入门到精通(面向初学者)
java·数据结构·算法
ANnianStriver15 分钟前
Java中的stream流的用法
java
1104.北光c°17 分钟前
【AI核心概念讲解】一口气搞懂 Agent:干翻传统后端!自主循环决策的秘密,ReAct 与 Plan-and-Execute 范式
java·人工智能·程序人生·ai·agent·react·智能体
Jul1en_26 分钟前
Claude 迁移 Codex 工作流迁移与更新
java·服务器·前端·后端·ai编程
Heo28 分钟前
14_React 中的更新队列 updateQueue
前端·javascript·面试
前端 贾公子34 分钟前
解决浏览器端 globalThis is not defined 报错
前端·javascript·vue.js
宁雨桥37 分钟前
前端与AI结合实战分享
前端·人工智能
未若君雅裁43 分钟前
Spring Statemachine 实战入门:从零实现一个订单状态流转 Demo
java·spring·状态模式
早日退休!!!1 小时前
操作系统锁
java·开发语言