欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 實(shí)用工具類Spring 的 StopWatch常用方法

 更新時(shí)間:2025年04月29日 10:53:02   作者:Stay Passion  
StopWatch 是 Spring 框架中極其實(shí)用的開(kāi)發(fā)輔助工具,它為性能分析和調(diào)試提供了輕量但強(qiáng)大的能力,使用簡(jiǎn)單、無(wú)需復(fù)雜配置,本文給大家介紹Java 實(shí)用工具類Spring 的 StopWatch常用方法,感興趣的朋友一起看看吧

前言

        在日常開(kāi)發(fā)中,我們經(jīng)常需要對(duì)代碼的執(zhí)行耗時(shí)進(jìn)行監(jiān)控和分析。Spring 提供了一個(gè)輕量級(jí)的計(jì)時(shí)工具類:org.springframework.util.StopWatch,可以非常方便地實(shí)現(xiàn)多個(gè)任務(wù)的精確耗時(shí)統(tǒng)計(jì),尤其適用于性能調(diào)優(yōu)與調(diào)試分析場(chǎng)景。

一、StopWatch 簡(jiǎn)介

StopWatch 是 Spring Core 中的一個(gè)實(shí)用類,用于對(duì)代碼執(zhí)行過(guò)程中的多個(gè)階段進(jìn)行計(jì)時(shí)和結(jié)果統(tǒng)計(jì)。它支持任務(wù)分段記錄、總耗時(shí)統(tǒng)計(jì)、任務(wù)名稱記錄等功能。

二、StopWatch 的常用方法

1. 構(gòu)造方法

StopWatch stopWatch = new StopWatch("performance-monitor");

參數(shù)可選,用于命名當(dāng)前計(jì)時(shí)器。

2. 開(kāi)始一個(gè)任務(wù)

stopWatch.start("task1");

開(kāi)始記錄一個(gè)任務(wù),并命名該任務(wù)。

3. 停止當(dāng)前任務(wù)

stopWatch.stop();

停止當(dāng)前正在記錄的任務(wù)。

4. 判斷狀態(tài)

stopWatch.isRunning();

判斷當(dāng)前是否還有任務(wù)在運(yùn)行。

5. 獲取統(tǒng)計(jì)信息

stopWatch.prettyPrint(); // 打印所有任務(wù)及耗時(shí)信息(格式化)
stopWatch.getTotalTimeMillis(); // 總耗時(shí)(毫秒)
stopWatch.getTaskCount(); // 獲取任務(wù)數(shù)

6. 獲取具體任務(wù)信息

TaskInfo[] tasks = stopWatch.getTaskInfo();
for (TaskInfo task : tasks) {
    System.out.println(task.getTaskName() + ": " + task.getTimeMillis());
}

三、常見(jiàn)使用場(chǎng)景

1. 性能瓶頸排查

在復(fù)雜方法中插入多個(gè) stopWatch.start("stepX") 記錄各階段耗時(shí)。

StopWatch sw = new StopWatch();
sw.start("loadDb");
loadFromDatabase();
sw.stop();
sw.start("parseJson");
parseJsonData();
sw.stop();
System.out.println(sw.prettyPrint());

2. 接口性能統(tǒng)計(jì)

可用于攔截器、過(guò)濾器等,對(duì)接口整體和各子流程耗時(shí)進(jìn)行統(tǒng)計(jì)。

3. 單元測(cè)試性能分析

在測(cè)試代碼中評(píng)估某個(gè)方法調(diào)用的穩(wěn)定性和耗時(shí)情況。

4. 多線程任務(wù)分析(注意線程隔離)

在并發(fā)場(chǎng)景下,不建議多個(gè)線程共用一個(gè) StopWatch 實(shí)例,應(yīng)為每個(gè)線程獨(dú)立創(chuàng)建實(shí)例。

四、與 System.currentTimeMillis() 的對(duì)比優(yōu)勢(shì)

功能System.currentTimeMillis()StopWatch
API 簡(jiǎn)潔非常原始封裝好任務(wù)名、階段
支持多任務(wù)手動(dòng)維護(hù)多個(gè)變量內(nèi)部支持任務(wù)堆棧
輸出格式自定義打印prettyPrint 統(tǒng)一美觀
可讀性高,可讀性好

五、總結(jié)

StopWatch 是 Spring 框架中極其實(shí)用的開(kāi)發(fā)輔助工具,它為性能分析和調(diào)試提供了輕量但強(qiáng)大的能力,使用簡(jiǎn)單、無(wú)需復(fù)雜配置。

        建議在接口調(diào)用鏈、框架擴(kuò)展點(diǎn)、自定義組件等性能敏感區(qū)域,結(jié)合日志系統(tǒng)或 APM 工具使用 StopWatch,幫助我們?cè)陂_(kāi)發(fā)階段快速定位瓶頸、量化優(yōu)化效果。

貼士:不要在生產(chǎn)環(huán)境中濫用 StopWatch.prettyPrint(),可以定向輸出日志或結(jié)合自定義日志格式收集信息更為合適。

到此這篇關(guān)于Java 實(shí)用工具類:Spring 的 StopWatch的文章就介紹到這了,更多相關(guān)java StopWatch內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談web服務(wù)器項(xiàng)目中request請(qǐng)求和response的相關(guān)響應(yīng)處理

    淺談web服務(wù)器項(xiàng)目中request請(qǐng)求和response的相關(guān)響應(yīng)處理

    這篇文章主要介紹了淺談web服務(wù)器項(xiàng)目中request請(qǐng)求和response的相關(guān)響應(yīng)處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java?guava主要功能介紹及使用心得總結(jié)

    java?guava主要功能介紹及使用心得總結(jié)

    這篇文章主要為大家介紹了java?guava主要功能介紹及使用心得總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • springboot利用aspose預(yù)覽office文件的實(shí)現(xiàn)過(guò)程

    springboot利用aspose預(yù)覽office文件的實(shí)現(xiàn)過(guò)程

    這篇文章主要給大家介紹了關(guān)于springboot利用aspose預(yù)覽office文件的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,需要的朋友可以參考下
    2021-06-06
  • 詳解SpringBoot集成消息隊(duì)列的案例應(yīng)用

    詳解SpringBoot集成消息隊(duì)列的案例應(yīng)用

    Message?Queue又名消息隊(duì)列,是一種異步通訊的中間件。可以理解為郵局,發(fā)送者將消息投遞到郵局,然后郵局幫我們發(fā)送給具體的接收者,具體發(fā)送過(guò)程和時(shí)間與我們無(wú)關(guān)。?消息隊(duì)列是分布式系統(tǒng)中重要的組件,消息隊(duì)列主要解決了應(yīng)用耦合、異步處理、流量削鋒等問(wèn)題
    2022-04-04
  • java線程間通信的通俗解釋及代碼示例

    java線程間通信的通俗解釋及代碼示例

    這篇文章主要介紹了java線程間通信的通俗解釋,介紹了線程通信中的幾個(gè)相關(guān)概念,然后分享了線程通信的實(shí)現(xiàn)方式及代碼示例,具有一定參考價(jià)值 ,需要的朋友可以了解下。
    2017-11-11
  • 解決logback-classic 使用testCompile的打包問(wèn)題

    解決logback-classic 使用testCompile的打包問(wèn)題

    這篇文章主要介紹了解決logback-classic 使用testCompile的打包問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 關(guān)于Spring中Bean的創(chuàng)建進(jìn)行更多方面的控制

    關(guān)于Spring中Bean的創(chuàng)建進(jìn)行更多方面的控制

    今天小編就為大家分享一篇關(guān)于關(guān)于Spring中Bean的創(chuàng)建進(jìn)行更多方面的控制,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • SpringBoot配置多數(shù)據(jù)源的四種方式分享

    SpringBoot配置多數(shù)據(jù)源的四種方式分享

    在日常開(kāi)發(fā)中我們都是以單個(gè)數(shù)據(jù)庫(kù)進(jìn)行開(kāi)發(fā),在小型項(xiàng)目中是完全能夠滿足需求的,但是,當(dāng)我們牽扯到大型項(xiàng)目的時(shí)候,單個(gè)數(shù)據(jù)庫(kù)就難以承受用戶的CRUD操作,那么此時(shí),我們就需要使用多個(gè)數(shù)據(jù)源進(jìn)行讀寫分離的操作,本文就給大家介紹SpringBoot配置多數(shù)據(jù)源的方式
    2023-07-07
  • 基于Listener監(jiān)聽(tīng)器生命周期(詳解)

    基于Listener監(jiān)聽(tīng)器生命周期(詳解)

    下面小編就為大家?guī)?lái)一篇基于Listener監(jiān)聽(tīng)器生命周期(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 一文詳細(xì)講解Java的父子繼承、方法的重寫與super關(guān)鍵字

    一文詳細(xì)講解Java的父子繼承、方法的重寫與super關(guān)鍵字

    Java中繼承是通過(guò)extends關(guān)鍵字實(shí)現(xiàn),幫助減少代碼重復(fù),提高復(fù)用性,子類繼承父類的屬性和方法,但私有成員除外,方法重寫(override)使子類改造父類方法以適應(yīng)新功能,這篇文章主要介紹了Java的父子繼承、方法的重寫與super關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2024-10-10

最新評(píng)論