五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

System.currentTimeMillis突然不香了

2023-11-08 22:09 作者:凱小吧  | 我要投稿

System.currentTimeMillis()

在做有些業(yè)務(wù)的時(shí)候,需要記錄該業(yè)務(wù)的執(zhí)行時(shí)間,這時(shí)候想到Date來記錄處理,也就是常用的System.currentTimeMillis()方法,在代碼塊執(zhí)行前后分別記錄,輸出差值。

Long startTime = System.currentTimeMillis();
//業(yè)務(wù)代碼
Long endTime = System.currentTimeMillis();
System.out.println("本次耗時(shí):" + (endTime - startTime));

當(dāng)當(dāng)看上面的代碼是不是簡單明了,當(dāng)某些情況下,比如小南這次滿屏的System.currentTimeMillis(),閉上眼可以想象滿屏的神獸在心中跑過。如果想做進(jìn)一步控制,一想什么也解決不了。

這時(shí)會想是否有框架會一些法,剛好可以滿足這場景?

StopWatch初始

StopWatch貌似Spring、Apache兩個(gè)頂級框架都有。小南用的是Spring框架中的。

StopWatch 是位于 org.springframework.util 包下的一個(gè)工具類,通過它可方便的對程序部分代碼進(jìn)行計(jì)時(shí)(ms級別),適用于同步單線程代碼塊。

StopWatch使用

想要使用它,需要引入對應(yīng)的包,如Maven 中引入 Spring 核心包,正常情況下我們的項(xiàng)目自動(dòng)引入了該包

StopWatch常見的方法有。

上例子

//建議使用有參可以對任務(wù)分類
StopWatch stopWatch = new StopWatch("統(tǒng)計(jì)模塊任務(wù)執(zhí)行情況");
// 任務(wù)一(1秒)
stopWatch.start("task1");
Thread.sleep(1000 * 1);
System.out.println("當(dāng)前任務(wù)名稱:" + stopWatch.currentTaskName());
stopWatch.stop();
// 任務(wù)二(2秒)
stopWatch.start("task2");
Thread.sleep(1000 * 2);
stopWatch.stop();
// stop后
System.out.println("stop-currentTaskName:"+stopWatch.currentTaskName());
// 最后一個(gè)任務(wù)的相關(guān)信息
System.out.println("最后一個(gè)任務(wù):" + stopWatch.getLastTaskName());
System.out.println("最后一個(gè)任務(wù):" + stopWatch.getLastTaskTimeMillis());
System.out.println("最后一個(gè)任務(wù):" + JSON.toJSON(stopWatch.getLastTaskInfo()));
//總?cè)蝿?wù)詳情
System.out.println("總耗時(shí):" + stopWatch.getTotalTimeMillis());
System.out.println("總?cè)蝿?wù)數(shù):" + stopWatch.getTaskCount());
System.out.println("所有任務(wù)詳情:" + JSON.toJSON(stopWatch.getTaskInfo()));
//耗時(shí)情況
System.out.println("prettyPrint:"+stopWatch.prettyPrint());
System.out.println("shortSummary:"+stopWatch.shortSummary());

console輸出情況

當(dāng)前任務(wù)名稱:task1
stop-currentTaskName:null
最后一個(gè)任務(wù):task2
最后一個(gè)任務(wù):2013
最后一個(gè)任務(wù):{"taskName":"task2","timeMillis":2013,"timeSeconds":2.013}
總耗時(shí):3024
總?cè)蝿?wù)數(shù):2
所有任務(wù)詳情:[{"taskName":"task1","timeMillis":1011,"timeSeconds":1.011},{"taskName":"task2","timeMillis":2013,"timeSeconds":2.013}]
prettyPrint:StopWatch '統(tǒng)計(jì)模塊任務(wù)執(zhí)行情況': running time (millis) = 3024
-----------------------------------------
ms ? ? % ? ? Task name
-----------------------------------------
01011 ?033% ?task1
02013 ?067% ?task2

shortSummary:StopWatch '統(tǒng)計(jì)模塊任務(wù)執(zhí)行情況': running time (millis) = 3024

總結(jié)

StopWatch沒有使用同步,非線程安全的。

同一個(gè)StopWatch對象,只能運(yùn)行一個(gè)task,再次開啟(start)task任務(wù),必須要停掉(stop)該對象正常使用的task,切記。

若要一次開啟多個(gè),需要new不同的StopWatch實(shí)例

簡單總結(jié)一句,Spring提供的計(jì)時(shí)器StopWatch對于秒、毫秒為單位方便計(jì)時(shí)的程序,尤其是單線程、順序執(zhí)行程序的時(shí)間特性的統(tǒng)計(jì)輸出支持比較好。能夠展示幾個(gè)任務(wù)分別執(zhí)行的時(shí)間,占比狀況等。


System.currentTimeMillis突然不香了的評論 (共 條)

分享到微博請遵守國家法律
绥宁县| 乌兰察布市| 九江县| 原平市| 西畴县| 金门县| 当雄县| 沙田区| 兴化市| 东至县| 团风县| 汉川市| 襄樊市| 泽库县| 德钦县| 和田县| 永川市| 南岸区| 荆门市| 内江市| 县级市| 黎平县| 蕲春县| 高州市| 磐石市| 武山县| 东安县| 房山区| 河曲县| 东平县| 阿图什市| 英吉沙县| 留坝县| 红安县| 武穴市| 荥阳市| 南通市| 云梦县| 无极县| 四平市| 承德县|