這里主要講講Java的定時(shí)任務(wù)是如何一步步發(fā)展而來的:
Timer
解釋:1000ms是延遲啟動(dòng)時(shí)間,2000ms是定時(shí)任務(wù)周期,每2s執(zhí)行一次
ScheduledExecutorService
解釋:延遲1s啟動(dòng),每隔1s執(zhí)行一次,是前一個(gè)任務(wù)開始時(shí)就開始計(jì)算時(shí)間間隔,但是會(huì)等上一個(gè)任務(wù)結(jié)束在開始下一個(gè)
SpringTask
解釋:
1.task1是每隔5s執(zhí)行一次,{秒} {分} {時(shí)} {日期} {月} {星期}
2.task2是延遲1s,每隔1S執(zhí)行一次
Quartz
quartz 是一個(gè)開源的分布式調(diào)度庫,它基于java實(shí)現(xiàn)。
1.Job 表示一個(gè)任務(wù),要執(zhí)行的具體內(nèi)容。
2.JobDetail 表示一個(gè)具體的可執(zhí)行的調(diào)度程序,Job 是這個(gè)可執(zhí)行程調(diào)度程序所要執(zhí)行的內(nèi)容,另外 JobDetail 還包含了這個(gè)任務(wù)調(diào)度的方案和策略。
3.Trigger 代表一個(gè)調(diào)度參數(shù)的配置,什么時(shí)候去調(diào)。
4.Scheduler 代表一個(gè)調(diào)度容器,一個(gè)調(diào)度容器中可以注冊(cè)多個(gè) JobDetail 和 Trigger。當(dāng) Trigger 與 JobDetail 組合,就可以被 Scheduler 容器調(diào)度了。