Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務(wù)
通常在使用java實現(xiàn)定時任務(wù)時,有兩種方法,一種是spring中的schedule(cron = ' */5 * * * ?'),另一種就是java中的timer,
timer+TimerTask配合實現(xiàn),這里附上Timer對象的一些常用api
Timer() 創(chuàng)建-個新計時器。Timer(boolean isDaemon) 創(chuàng)建一個新計時器, 可以指定其相關(guān)的線程作為守護(hù)程序運行。Timer(String, name) 創(chuàng)建一個新計時器,其相關(guān)的線程具有指定的名稱。Timer(String, name, boolean isDaemon) 創(chuàng)建一個新計時器, 可以指定其相關(guān)的線程作為守護(hù)程序運行。cancel() 終止此計時器,丟棄所有當(dāng)前已安排的任務(wù)。.purge () 從此計時器的任務(wù)隊列中移除所有己取消的任務(wù)。schedule(TimerTask, task, Date time) 安排在指定的時間執(zhí)行指定的任務(wù)。schedule (TimerTask task, Date firstTime, long period) 安排指定的任務(wù)在指定的時間開始進(jìn)行重復(fù)的固定延遲執(zhí)行。schedule (TimerTask task, long, delay) 安排在指定延遲后執(zhí)行指定的任務(wù)。schedule (TimerTask task, 1ong. delay, long period) 安排指定的任務(wù)從指定的延遲后開始進(jìn)行重復(fù)的固定延遲執(zhí)行。scheduleAtFixedRate (TimerTask task,Date firstTime, long period) 安排指定的任務(wù)在指定的時間開始進(jìn)行重復(fù)的固定速率執(zhí)行。scheduleAtFixedRate (TimerTask task, long delay, long period) 安排指定的任務(wù)在指定的延遲后開始進(jìn)行重復(fù)的固定速率執(zhí)行。
下面列舉一個循環(huán)創(chuàng)建TimerTask的實例:
public static void main(String[] args) throws ParseException { ArrayList<TimeClass> list = new ArrayList<>(); //TimeClass是自己寫的一個類,只有兩個字段,private String startTime和private String endTime; list.add(new TimeClass('2020-07-23 20:08:00 ','2020-07-23 20:08:15')); list.add(new TimeClass('2020-07-23 20:08:30 ','2020-07-23 20:08:00')); DateFormat df = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); //一個對象,在指定的開始時間和結(jié)束時間,分別進(jìn)行不同的操作,如商品的定時上架、下架。 Timer timer = new Timer(); for(int i = 0; i < list.size(); i++){ Date startTime = df.parse(list.get(i).getStartTime()); Date endTime = df.parse(list.get(i).getEndTime()); int a=i; timer.schedule(new TimerTask() { //新建一個定時任務(wù) @Override public void run() { System.out.println('任務(wù)開始了'+a); } },startTime); timer.schedule(new TimerTask() { @Override public void run() { System.out.println('任務(wù)結(jié)束了'+a); } },endTime); } //timer的過程中不會阻塞,不影響下面代碼的執(zhí)行 for (int i=0;i<=20;i++) { System.out.println('=====' + i); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
