下面是一個利用Timer定時器在天天指定時間執行批處理程序的例子。java
有關 java.util.Timer 詳細知識請參考API。數據庫
值得注意的一點是Timer是單線程順序執行多個任務的。spa
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; } }