1. 程式人生 > 程式設計 >Java迴圈呼叫多個timer實現定時任務

Java迴圈呼叫多個timer實現定時任務

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

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

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

下面列舉一個迴圈建立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");
     //一個物件,在指定的開始時間和結束時間,分別進行不同的操作,如商品的定時上架、下架。
    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() { //新建一個定時任務
         @Override
         public void run() {
           System.out.println("任務開始了"+a);
         }
       },startTime);       
       timer.schedule(new TimerTask() {
         @Override
         public void run() {
           System.out.println("任務結束了"+a);         }
       },endTime); 
     }
     //timer的過程中不會阻塞,不影響下面程式碼的執行
     for (int i=0;i<=20;i++) {
       System.out.println("=====" + i);
     }
   }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。