課程
/后端開發(fā)
/Java
/Java定時(shí)任務(wù)調(diào)度工具詳解之Quartz篇
誰能告訴我這里為啥打印這么多次
2018-03-25
源自:Java定時(shí)任務(wù)調(diào)度工具詳解之Quartz篇 2-8
正在回答
43秒啟動(dòng)的scheduler,每秒執(zhí)行一次;2秒后scheduler被關(guān)閉,也就是說任務(wù)被觸發(fā)的時(shí)間為:43秒,44秒,45秒,那么由于單個(gè)job中存在一個(gè)sleep(5s)的線程,那么job中打印時(shí)間應(yīng)該為:48秒,49秒,50秒,觀察結(jié)果卻是:49秒,49秒,50秒,說明在43秒觸發(fā)的任務(wù),假設(shè)是43.999秒觸發(fā)的,理論上應(yīng)該在48.999秒打印job中的時(shí)間,但是由于每行程序執(zhí)行都需要時(shí)間,假設(shè)為1ms,就導(dǎo)致第一次觸發(fā)的任務(wù)在打印時(shí)間的時(shí)候已經(jīng)到了49秒。自己在執(zhí)行程序的時(shí)候把毫秒單位也打出來就容易理解了。同時(shí)可能quartz自己的執(zhí)行機(jī)制,會(huì)把時(shí)間相近,比如相差五毫秒以內(nèi)(推測(cè))的兩條任務(wù)同時(shí)執(zhí)行,也就是說在同一毫秒精度執(zhí)行。
因?yàn)榫€程睡眠了2秒,它會(huì)把睡眠的的這2秒需要執(zhí)行的代碼都補(bǔ)上
設(shè)置的是每秒打印一次,但是為啥會(huì)重複一次49秒就不知道了
舉報(bào)
Java定時(shí)任務(wù)調(diào)度工具詳解之Quartz篇
2 回答為什么執(zhí)行結(jié)果只有成員屬性的,jobDataMap的值打印不出來
2 回答四秒鐘開始執(zhí)行第一次,六秒后停止執(zhí)行,運(yùn)行間隔兩秒。老師的demo可以運(yùn)行兩次,為什么我的demo只能執(zhí)行一次?(是因?yàn)槲业膓uartz是2.3.0的原因嗎?)
2 回答把打印當(dāng)前時(shí)間的這幾句移到開頭的位置就不會(huì)在控制臺(tái)輸出出了
1 回答有誰試過沒有??
1 回答測(cè)試maven程序,執(zhí)行App.java有異常打印,是否影響項(xiàng)目?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2021-08-05
43秒啟動(dòng)的scheduler,每秒執(zhí)行一次;

2秒后scheduler被關(guān)閉,也就是說任務(wù)被觸發(fā)的時(shí)間為:
43秒,
44秒,
45秒,
那么由于單個(gè)job中存在一個(gè)sleep(5s)的線程,那么job中打印時(shí)間應(yīng)該為:
48秒,
49秒,
50秒,
觀察結(jié)果卻是:
49秒,
49秒,
50秒,
說明在43秒觸發(fā)的任務(wù),假設(shè)是43.999秒觸發(fā)的,理論上應(yīng)該在48.999秒打印job中的時(shí)間,但是由于每行程序執(zhí)行都需要時(shí)間,假設(shè)為1ms,就導(dǎo)致第一次觸發(fā)的任務(wù)在打印時(shí)間的時(shí)候已經(jīng)到了49秒。
自己在執(zhí)行程序的時(shí)候把毫秒單位也打出來就容易理解了。
同時(shí)可能quartz自己的執(zhí)行機(jī)制,會(huì)把時(shí)間相近,比如相差五毫秒以內(nèi)(推測(cè))的兩條任務(wù)同時(shí)執(zhí)行,也就是說在同一毫秒精度執(zhí)行。
2019-01-28
因?yàn)榫€程睡眠了2秒,它會(huì)把睡眠的的這2秒需要執(zhí)行的代碼都補(bǔ)上
2018-03-26
設(shè)置的是每秒打印一次,但是為啥會(huì)重複一次49秒就不知道了