Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務(wù)
更新時間:2020年07月28日 10:24:49 作者:張志勇-
這篇文章主要介紹了Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務(wù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
通常在使用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)的線程作為守護程序運行。 Timer(String, name) 創(chuàng)建一個新計時器,其相關(guān)的線程具有指定的名稱。 Timer(String, name, boolean isDaemon) 創(chuàng)建一個新計時器, 可以指定其相關(guān)的線程作為守護程序運行。 cancel() 終止此計時器,丟棄所有當前已安排的任務(wù)。. purge () 從此計時器的任務(wù)隊列中移除所有己取消的任務(wù)。 schedule(TimerTask, task, Date time) 安排在指定的時間執(zhí)行指定的任務(wù)。 schedule (TimerTask task, Date firstTime, long period) 安排指定的任務(wù)在指定的時間開始進行重復(fù)的固定延遲執(zhí)行。 schedule (TimerTask task, long, delay) 安排在指定延遲后執(zhí)行指定的任務(wù)。 schedule (TimerTask task, 1ong. delay, long period) 安排指定的任務(wù)從指定的延遲后開始進行重復(fù)的固定延遲執(zhí)行。 scheduleAtFixedRate (TimerTask task,Date firstTime, long period) 安排指定的任務(wù)在指定的時間開始進行重復(fù)的固定速率執(zhí)行。 scheduleAtFixedRate (TimerTask task, long delay, long period) 安排指定的任務(wù)在指定的延遲后開始進行重復(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é)束時間,分別進行不同的操作,如商品的定時上架、下架。
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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中注解@JsonFormat與@DateTimeFormat的使用
從數(shù)據(jù)庫獲取時間傳到前端進行展示的時候,我們有時候可能無法得到一個滿意的時間格式的時間日期,本文主要介紹了Java中注解@JsonFormat與@DateTimeFormat的使用,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
rabbitmq結(jié)合spring實現(xiàn)消息隊列優(yōu)先級的方法
本篇文章主要介紹了rabbitmq結(jié)合spring實現(xiàn)消息隊列優(yōu)先級的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02

