最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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突然不香了的評論 (共 條)

分享到微博請遵守國家法律
华阴市| 阿克苏市| 普兰店市| 会宁县| 东宁县| 玉林市| 嵩明县| 台中市| 辽中县| 山东省| 洛扎县| 于田县| 秀山| 新平| 西青区| 沈阳市| 胶州市| 汝阳县| 南乐县| 夏邑县| 那坡县| 高青县| 东安县| 滕州市| 福鼎市| 平度市| 恩施市| 瑞金市| 白城市| 容城县| 岳普湖县| 津南区| 蒙城县| 乌拉特前旗| 黄冈市| 沂水县| 怀仁县| 富源县| 会昌县| 吉木萨尔县| 阿尔山市|