java使用Timer定時器在指定時間執行程式
阿新 • • 發佈:2019-01-05
下面是一個利用Timer定時器在每天指定時間執行批處理程式的例子。
有關 java.util.Timer 詳細知識請參考API。
值得注意的一點是Timer是單執行緒順序執行多個任務的。
package com.dylan; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** * 自定備份 * * @author xusucheng * @create 2018-03-05 **/ public class auto_backup { public static void main(String[] args) { backup(); } // 每天11:30執行資料庫備份任務 public static void backup() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 11); // 控制時 calendar.set(Calendar.MINUTE, 30); // 控制分 calendar.set(Calendar.SECOND, 0); // 控制秒 Date time = calendar.getTime(); // 得出執行任務的時間,此處為今天的11:30:00 Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { execBat("D:\\script\\backup.bat"); //換成你的程式 } }, time, 1000 * 60 * 60 * 24);// 這裡設定將延時每天固定執行 } //執行bat檔案 public static void execBat(String path) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Runtime rt = Runtime.getRuntime(); Process ps = null; try { ps = rt.exec(path); ps.waitFor(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } int result = ps.exitValue(); if (result == 0) { System.out.println("執行完畢--" + sdf.format(new Date())); } else { System.out.println("執行失敗--" + sdf.format(new Date())); } ps.destroy(); ps = null; } }