当前位置: 首页 > news >正文

详细分析Java中的StopWatch基本知识(附Demo)

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

对于Java的基本知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

1. 基本知识

StopWatch 是 Spring Framework 提供的一个简单计时器类,用来测量代码的执行时间

它可以用来跟踪某个任务或一系列任务的执行时间,常用于性能调优或监控任务的耗时

  1. 创建 StopWatch 对象:可以使用无参构造器或指定一个唯一标识符来创建一个 StopWatch 实例

  2. 开始计时:通过 start() 方法开始一个计时。可以给每个计时任务指定一个任务名,方便后续分析

  3. 停止计时:使用 stop() 方法停止当前任务的计时

  4. 获取任务耗时:通过 getTotalTimeMillis() 可以获取所有任务的总耗时,或者通过 getLastTaskTimeMillis() 获取上一个任务的耗时

  5. 任务信息:可以获取每个任务的耗时、百分比以及名称等详细信息

  6. 重置计时器:reset() 方法可以重置计时器,清除所有任务数据

基本的 API 使用方式
构造器

  • StopWatch():创建一个没有名称的计时器
  • StopWatch(String id):创建一个有指定唯一标识符 id 的计时器
方法功能
start()开始计时
start(String taskName开始一个命名任务的计时
stop()停止当前任务的计时
reset()重置计时器
getTotalTimeMillis()获取所有任务的总耗时(毫秒)
getLastTaskTimeMillis()获取最后一个任务的耗时(毫秒)
getTaskInfo()获取所有任务的详细信息
prettyPrint()格式化输出任务耗时信息,便于日志分析

2. Demo

import org.springframework.util.StopWatch;public class StopWatchDemo {public static void main(String[] args) throws InterruptedException {// 创建一个 StopWatch 实例StopWatch stopWatch = new StopWatch();// 开始第一个任务计时stopWatch.start("任务1");  // 启动名为 "任务1" 的计时Thread.sleep(500);  // 模拟任务执行,休眠500毫秒stopWatch.stop();  // 停止第一个任务计时// 开始第二个任务计时stopWatch.start("任务2");  // 启动名为 "任务2" 的计时Thread.sleep(300);  // 模拟任务执行,休眠300毫秒stopWatch.stop();  // 停止第二个任务计时// 输出所有任务的详细信息,格式化展示System.out.println(stopWatch.prettyPrint());// 获取所有任务的总耗时System.out.println("总耗时: " + stopWatch.getTotalTimeMillis() + " ms");}
}

截图如下:

在这里插入图片描述

import org.springframework.util.StopWatch;public class MultipleTaskDemo {public static void main(String[] args) throws InterruptedException {// 创建一个带有ID的StopWatch实例StopWatch stopWatch = new StopWatch("MyStopWatch");// 开始第一个任务stopWatch.start("任务 A");Thread.sleep(200); // 模拟任务 A 执行stopWatch.stop();  // 停止计时// 开始第二个任务stopWatch.start("任务 B");Thread.sleep(400); // 模拟任务 B 执行stopWatch.stop();  // 停止计时// 开始第三个任务stopWatch.start("任务 C");Thread.sleep(600); // 模拟任务 C 执行stopWatch.stop();  // 停止计时// 输出 StopWatch 的 ID 和所有任务信息System.out.println("StopWatch ID: " + stopWatch.getId());System.out.println(stopWatch.prettyPrint());// 遍历每个任务的信息for (StopWatch.TaskInfo taskInfo : stopWatch.getTaskInfo()) {System.out.println("任务名称: " + taskInfo.getTaskName());System.out.println("任务耗时: " + taskInfo.getTimeMillis() + " ms");}// 输出总耗时System.out.println("总耗时: " + stopWatch.getTotalTimeMillis() + " ms");}
}

截图如下:

在这里插入图片描述


http://www.mrgr.cn/news/39517.html

相关文章:

  • AI学习指南深度学习篇-批标准化的实现机制
  • Flume实战--Flume中的选择器、自动容灾(故障转移)、负载均衡的详解与操作
  • nginx的安装和使用
  • 1.8 软件业务测试
  • MySQL_触发器
  • 建筑物变化检测算法baseline工程,开箱即用,23年5月测试准确度超越阿里云aiearth
  • JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
  • 计算机视觉周边技术解析:从基础到前沿
  • Github 2024-09-30 开源项目周报 Top15
  • 初始MYSQL数据库(8)—— JDBC编程
  • jQuery UI 工作原理
  • 实战OpenCV之边缘检测
  • 【C++】多态(上)
  • 什么是区块链?
  • ISA-95制造业中企业和控制系统的集成的国际标准-(2)
  • 使用 Vue3 和 Axios 实现 CRUD 操作
  • spring全家桶使用教程
  • Stable Diffusion绘画 | 来训练属于自己的模型:素材处理与打标篇
  • PIKACHU | PIKACHU 靶场 XSS 后台配置
  • Spring - @Import注解