为了账号安全,请及时绑定邮箱和手机立即绑定

谁能告诉我这里为啥打印这么多次

https://img1.sycdn.imooc.com//5ab79e5700019dd112140674.jpg

谁能告诉我这里为啥打印这么多次

正在回答

3 回答

43秒启动的scheduler,每秒执行一次;
2秒后scheduler被关闭,也就是说任务被触发的时间为:
43秒,
44秒,
45秒,
那么由于单个job中存在一个sleep(5s)的线程,那么job中打印时间应该为:
48秒,
49秒,
50秒,
观察结果却是:
49秒,
49秒,
50秒,
说明在43秒触发的任务,假设是43.999秒触发的,理论上应该在48.999秒打印job中的时间,但是由于每行程序执行都需要时间,假设为1ms,就导致第一次触发的任务在打印时间的时候已经到了49秒。
自己在执行程序的时候把毫秒单位也打出来就容易理解了。
同时可能quartz自己的执行机制,会把时间相近,比如相差五毫秒以内(推测)的两条任务同时执行,也就是说在同一毫秒精度执行。https://img1.sycdn.imooc.com//610bf32700010da710000775.jpg
https://img1.sycdn.imooc.com//610bf3270001dff710000783.jpg

0 回复 有任何疑惑可以回复我~

因为线程睡眠了2秒,它会把睡眠的的这2秒需要执行的代码都补上

0 回复 有任何疑惑可以回复我~

設置的是每秒打印一次,但是為啥會重複一次49秒就不知道了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

谁能告诉我这里为啥打印这么多次

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信