java timer 實現在指定時間執行方法


最近在弄一個定時發送的項目,需要定時執行方法,於是用到了Timer,但是我想要的功能網絡上的資源比較少,所以自己研究了一下。

下面是我寫的一些代碼

 

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;


public  class TimerTest {
     /*
     * 定時執行方法
     
*/
     public  void Timing(String sssString ,  int[] dateTime){
        Timer timer =  new Timer();
        Calendar calendar = Calendar.getInstance();
        calendar.set(dateTime[0], dateTime[1]-1, dateTime[2], dateTime[3], dateTime[4], dateTime[5]); // 第二的參數要主要,月是從0開始的,所以要-1.
        
        Date date = calendar.getTime(); // 網絡上很多都是用Date date = new Date(year, month, date, hrs, min, sec)
//         System.out.println(date);
         try {
            timer.schedule( new NowTask( timer,sssString), date); // 可以傳遞參數進去定時任務類
        }  catch (Exception e) {
            e.printStackTrace();
        }
    }
     /*
     * 實現時間字符串轉化為int數組,便於傳遞參數
     
*/
     public  int[] String2Int(String timeString){
        String year = timeString.substring(0, 4);
        String month = timeString.substring(5, 7);
        String date = timeString.substring(8, 10);
        String hour =timeString.substring(11, 13);
        String min = timeString.substring(14, 16);
        String sec = timeString.substring(17,19);
         int[] time =  new  int [6];
        String[] timeStrings =  new String[]{year,month,date,hour,min,sec};
         for ( int i = 0; i < timeStrings.length; i++) {
            time[i]=Integer.valueOf(timeStrings[i]);
        }
         return time;
    }
     public  static  void main(String[] args) {
        TimerTest timerTest =  new TimerTest();
        String timeString ="2012/04/11 16:46:00";
        timerTest.Timing("成功了", timerTest.String2Int(timeString));
    }
}

然后是NowTask類

import java.util.Timer;
import java.util.TimerTask;

public  class NowTask  extends TimerTask{
     private Timer timer;
     private String string;
     /*
     * 構造器
     
*/
     public NowTask(){
        
    }
     public NowTask(String string){
         this.string = string;
    }
     public NowTask(Timer timer){
         this.timer =timer;
    }
     public NowTask(Timer timer , String string){
         this.timer = timer;
         this.string =string;
    }
     // 屬性的get、set方法
     public Timer getTimer() {
         return timer;
    }

     public  void setTimer(Timer timer) {
         this.timer = timer;
    }
     public String getString() {
         return string;
    }
     public  void setString(String string) {
         this.string = string;
    }
     /*
     * (non-Javadoc)
     * @see java.util.TimerTask#run()
     * 執行方法
     
*/
@Override
     public  void run(){
         // 這里寫需要定時執行的方法
        System.out.println(string);
        timer.cancel(); // 傳遞timer進來就是為了在方法執行完后退出,必須退出
        System.out.println("結束");
    }
}

 

分享一下,大家支持一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM