java定時器的三種技術實現

從實現的技術上來分類,目前主要有三種技術(或者說有三種產品):
1、Java自帶的java.util.Timer類,這個類允許你調度一個java.util.TimerTask任務。使用這種方式可以讓你的程序按照某一個頻度執行,但不能在指定時間運行。一般用的較少,這篇文章將不做詳細介紹。
2、使用Quartz,這是一個功能比較強大的的調度器,可以讓你的程序在指定時間執行,也可以按照某一個頻度執行,配置起來稍顯複雜,稍後會詳細介紹。
3、Spring3.0以後自帶的task,可以將它看成一個輕量級的Quartz,而且使用起來比Quartz簡單許多

當程序初始化完成Timer後,定時任務就會按照我們設定的時間去執行,Timer提供了schedule方法,該方法有多中重載方式來適應不同的情況,如下:

schedule(TimerTask task, Date time):安排在指定的時間執行指定的任務。

schedule(TimerTask task, Date firstTime, long period) :安排指定的任務在指定的時間開始進行重複的固定延遲執行。

schedule(TimerTask task, long delay) :安排在指定延遲後執行指定的任務。

schedule(TimerTask task, long delay, long period) :安排指定的任務從指定的延遲後開始進行重複的固定延遲執行。

 import java.util.Calendar;
 import java.util.Date;
 import java.util.Timer;
 import java.util.TimerTask;
  
 public class TimeTest {
 public static void main(String[] args) {
      timer1();
      //timer2();
     //timer3();
     //timer4();
   }
  
   // 第一種方法:設定指定任務task在指定時間time執行 schedule(TimerTask task, Date time)

       public static void timer1() {
         Timer timer = new Timer();
         timer.schedule(new TimerTask() {
           public void run() {
             System.out.println("-------設定要指定任務--------");
           }
         }, 2000);// 設定指定的時間time,此處爲2000毫秒
            }

 
   // 第二種方法:設定指定任務task在指定延遲delay後進行固定延遲peroid的執行
   // schedule(TimerTask task, long delay, long period)

       public static void timer2() {
         Timer timer = new Timer();
         timer.schedule(new TimerTask() {
           public void run() {
             System.out.println("-------設定要指定任務--------");
           }
         }, 1000, 5000);
       }

  
   // 第三種方法:設定指定任務task在指定延遲delay後進行固定頻率peroid的執行。
   // scheduleAtFixedRate(TimerTask task, long delay, long period)
  

    public static void timer3() {
         Timer timer = new Timer();
         timer.scheduleAtFixedRate(new TimerTask() {
           public void run() {
             System.out.println("-------設定要指定任務--------");
          }
         }, 1000, 2000);
       }
    
   // 第四種方法:安排指定的任務task在指定的時間firstTime開始進行重複的固定速率period執行.
   // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
   	
   	public static void timer4() { 
   
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制時
    calendar.set(Calendar.MINUTE, 0);    // 控制分
    calendar.set(Calendar.SECOND, 0);    // 控制秒
     
    Date time = calendar.getTime();     // 得出執行任務的時間,此處爲今天的12:00:00
  
     Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
       public void run() {
         System.out.println("-------設定要指定任務--------");
      }
    }, time, 1000 * 60 * 60 * 24);// 這裏設定將延時每天固定執行
       } 
       }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章