網站首頁 編程語言 正文
文章目錄
- StopWatch介紹
- StopWatch屬性詳解
- StopWatch方法詳解
- StopWatch使用示例
StopWatch介紹
StopWatch類是Spring框架中用于測量代碼執行時間的工具類,它提供了一系列屬性來記錄監測信息。
本文基于spring-boot-starter-web:2.2.2RELEASE版本。
源碼:
public class StopWatch {
private final String id;
private boolean keepTaskList = true;
private final List<StopWatch.TaskInfo> taskList = new LinkedList<>();
private long startTimeMillis;
@Nullable
private String currentTaskName;
@Nullable
private StopWatch.TaskInfo lastTaskInfo;
private int taskCount;
private long totalTimeMillis;
......方法略
public static final class TaskInfo {
private final String taskName;
private final long timeNanos;
}
}
StopWatch屬性詳解
屬性 | 描述 |
---|---|
id | 表示該StopWatch對象的唯一標識符,可以通過構造函數傳入。 |
keepTaskList | 表示是否保留所有記錄的監測任務,,默認為true。 如果該值為true,則程序可以通過getTaskInfo()方法獲取所有監測任務的詳細信息,否則僅可以獲取最后一次監測任務的詳細信息。 |
taskList | 用于記錄所有的監測任務信息,只有keepTaskList屬性值為true時才記錄任務信息,該值在stop()方法調用時添加一條任務信息。 |
currentTaskName | 表示當前正在執行的監測任務名稱,該值在start()方法調用時設置。 |
lastTaskInfo | 表示最后一次執行的監測任務的詳細信息,包括任務名稱、執行時間等,該值在stop()方法調用時設置。 |
taskCount | 表示執行的監測任務數目,該值在stop()方法調用時值+1。 |
totalTimeMillis | 表示該StopWatch對象記錄的所有監測任務的總執行時間,單位為毫秒,該值在stop()方法調用時值+當前任務的執行時間。 |
TaskInfo.taskName | 任務名稱。 |
TaskInfo.timeNanos | 任務執行時間。 |
StopWatch方法詳解
方法 | 描述 |
---|---|
void setKeepTaskList(boolean keepTaskList) | 設置是否保留所有記錄的監測任務,默認為true。 如果該值為true,則程序可以通過getTaskInfo()方法獲取所有監測任務的詳細信息。 |
void start() | 開始一個新的監測任務,可設置任務名稱。記錄當前時間和任務名稱。 |
void stop() | 結束當前監測任務。記錄任務執行時間,更新總執行時間和任務數量。 |
String getId() | 獲取唯一標識符。 |
String currentTaskName() | 獲取當前正在運行的監測任務名稱。 |
TaskInfo getLastTaskInfo() | 獲取最后一次執行的監測任務的詳細信息,包括任務名稱、開始時間、結束時間和執行時間等。 |
String getLastTaskName() | 獲取最后一次執行的監測任務的任務名稱 |
long getLastTaskTimeMillis() | 獲取最后一次執行的監測任務的執行時間,單位毫秒 |
long getLastTaskTimeNanos() | 獲取最后一次執行的監測任務的執行時間,單位納秒 |
int getTaskCount() | 獲取已執行的監測任務數目 |
TaskInfo[] getTaskInfo() | 獲取所有監測任務信息,僅在keepTaskList屬性為true時有效。 |
double getTotalTimeSeconds() | 獲取所有監測任務的總執行時間,單位為秒。 |
long getTotalTimeMillis() | 獲取所有監測任務的總執行時間,單位為毫秒。 |
long getTotalTimeNanos() | 獲取所有監測任務的總執行時間,單位為納秒。 |
boolean isRunning() | 判斷當前StopWatch對象是否正在執行監測任務。 |
String shortSummary() | 以字符串形式輸出所有監測任務的簡要信息,包括任務數目和總執行時間。 |
String prettyPrint() | 以字符串形式輸出所有監測任務的執行時間和詳細信息。 |
StopWatch使用示例
public static void main(String[] args) throws InterruptedException {
StopWatch stopWatch = new StopWatch();
stopWatch.start("task1");
System.out.println("當前任務名稱:"+stopWatch.currentTaskName());
Thread.sleep(1000);
stopWatch.stop();
System.out.println("task1耗時毫秒:"+stopWatch.getLastTaskTimeMillis());
stopWatch.start("task2");
System.out.println("當前任務名稱:"+stopWatch.currentTaskName());
Thread.sleep(2000);
stopWatch.stop();
System.out.println("task2耗時毫秒:"+stopWatch.getLastTaskTimeMillis());
System.out.println("總任務數:"+stopWatch.getTaskCount());
System.out.println("總耗時毫秒:"+stopWatch.getTotalTimeMillis());
System.out.println("所有任務簡要信息:\n"+stopWatch.shortSummary());
System.out.println("所有任務詳細信息:\n"+stopWatch.prettyPrint());
}
輸出:
當前任務名稱:task1
task1耗時毫秒:1013
當前任務名稱:task2
task2耗時毫秒:2014
總任務數:2
總耗時毫秒:3027
所有任務簡要信息:
StopWatch '': running time = 3027555400 ns
所有任務詳細信息:
StopWatch '': running time = 3027555400 ns
---------------------------------------------
ns % Task name
---------------------------------------------
1013462900 033% task1
2014092500 067% task2
原文鏈接:https://blog.csdn.net/JokerLJG/article/details/129010224
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-09-23 Go語言結構體Go?range的學習教程_Golang
- 2022-11-09 WPF使用WrapPanel實現虛擬化效果_C#教程
- 2023-07-18 SpringBoot中無法用@Value獲取yml中的配置值的原因
- 2021-12-05 Android網絡監聽和網絡判斷示例介紹_Android
- 2023-01-15 C++實現自定義撤銷重做功能的示例代碼_C 語言
- 2022-04-20 python錯誤提示:Errno?2]?No?such?file?or?directory的解決方法
- 2022-07-24 python單向循環鏈表實例詳解_python
- 2022-06-16 Go基礎教程系列之數據類型詳細說明_Golang
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支