1. 程式人生 > 實用技巧 >java迴圈呼叫多個timer定時器

java迴圈呼叫多個timer定時器

通常在使用java實現定時任務時,有兩種方法,一種是spring中的schedule(cron = " */5 * * * ?"),另一種就是java中的timer,

timer+TimerTask配合實現,這裡附上Timer物件的一些常用api

 1 Timer()                     建立-個新計時器。
 2 Timer(boolean isDaemon)           建立一個新計時器, 可以指定其相關的執行緒作為守護程式執行。
 3 Timer(String, name)              建立一個新計時器,其相關的執行緒具有指定的名稱。
 4 Timer(String, name, boolean
isDaemon) 建立一個新計時器, 可以指定其相關的執行緒作為守護程式執行。
5 cancel() 終止此計時器,丟棄所有當前已安排的任務。. 6 purge () 從此計時器的任務佇列中移除所有己取消的任務。
7 schedule(TimerTask, task, Date time)                 安排在指定的時間執行指定的任務。 8 schedule (TimerTask task, Date firstTime, long period)     安排指定的任務在指定的時間開始進行重複的固定延遲執行。 9 schedule (TimerTask task, long
, delay)               安排在指定延遲後執行指定的任務。 10 schedule (TimerTask task, 1ong. delay, long period)        安排指定的任務從指定的延遲後開始進行重複的固定延遲執行。 11 scheduleAtFixedRate (TimerTask task,Date firstTime, long period) 安排指定的任務在指定的時間開始進行重複的固定速率執行。 12 scheduleAtFixedRate (TimerTask task, long delay, long period) 安排指定的任務在指定的延遲後開始進行重複的固定速率執行。

下面列舉一個迴圈建立TimerTask的例項:

 1  public static void main(String[] args) throws ParseException {
 2 
 3         ArrayList<TimeClass> list = new ArrayList<>();
 4         list.add(new TimeClass("2020-07-23 20:08:00 ","2020-07-23 20:08:15"));
 5         list.add(new TimeClass("2020-07-23 20:08:30 ","2020-07-23 20:08:00"));
 6 
 7         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
8 //一個物件,在指定的開始時間和結束時間,分別進行不同的操作,如商品的定時上架、下架。
9 Timer timer = new Timer(); 10 for(int i = 0; i < list.size(); i++){ 11 Date startTime = df.parse(list.get(i).getStartTime()); 12 Date endTime = df.parse(list.get(i).getEndTime()); 13 int a=i; 14 timer.schedule(new TimerTask() { //新建一個定時任務 15 @Override 16 public void run() { 17 System.out.println("任務開始了"+a); 18 } 19 },startTime); 20 21 timer.schedule(new TimerTask() { 22 @Override 23 public void run() { 24 System.out.println("任務結束了"+a); 25 } 26 },endTime); 27 28 } 29 //timer的過程中不會阻塞,不影響下面程式碼的執行 30 for (int i=0;i<=20;i++) { 31 System.out.println("=====" + i); 32 } 33 }