1. 程式人生 > 其它 >JAVA中的定時器 Timer

JAVA中的定時器 Timer

建立定時器物件:

Timer timer = new Timer();

定時執行任務:
只執行一次:
timer.schedule(TimerTask task, long delay)  // 延遲 delay(毫秒)後執行一次 task ;
timer.schedule(TimerTask task, Date time)  // 指定時間 time 執行一次 task;

重複執行:
timer.schedule(TimerTask task, long delay, long period)  // 延遲 delay(毫秒)後首次執行 task,間隔
period 重複執行 task;
timer.
schedule(TimerTask task, Date firstTime, long period)  //指定 firstTime 首次執行 task, 間隔
period 重複執行 task;

例子:
 /**
     * 指定定時器延遲 delay 後執行任務(只執行一次)
     */
    public static void timer1(){
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("當前時間: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        }, 1000);
    }

    /**
     * 指定某個時間執行定時器(之執行一次),對於一過去的時間立即執行
     */
    public static void timer2(){
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("當前時是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        }, DateUtils.strToDate("2022-03-13 09:54:20"));
    }

    /**
     * 延遲 delay 時間後執行,間隔 period 重複執行
     */
    public static void timer3(){
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("當前時間是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        },0, 1000);
    }

    /**
     * 設定首次執行時間,間隔 period 重複執行(首次時間已經過去立即執行)
     */
    public static void timer4(){
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("當前時間是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        }, DateUtils.strToDate("2022-05-13 10:10:30"), 1000);
    }

時間工具類:

public class DateUtils {
    public static String sdf_str1 = "yyyy-MM-dd HH:mm:ss";

    public static String sdf_str2 = "yyyy-MM-dd";

    public static String sdf_str3 = "HH:mm:ss";


    private static SimpleDateFormat SDF = new SimpleDateFormat(sdf_str1);

    /**
     * 自定義時間轉換成字串
     * @param date
     * @param formate
     * @return
     */
    public static String dateToStr(Date date, String formate){
        SimpleDateFormat sdf = new SimpleDateFormat(formate);
         return sdf.format(date);
    }

    public static Date strToDate(String str){
        try {
            return SDF.parse(str);
        } catch (ParseException e) {
//            e.printStackTrace();
            System.err.println("時間轉換失敗: " + e.getMessage());
        }
        return null;
    }
}