溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java循環調用多個timer實現定時任務的方法

發布時間:2020-07-30 10:31:35 來源:億速云 閱讀:452 作者:小豬 欄目:開發技術

這篇文章主要講解了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);
     }
   }

看完上述內容,是不是對Java循環調用多個timer實現定時任務的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女