java使用Timer定时器在指定时间执行程序

下面是一个利用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;
    }
}






你可能感兴趣的:(Java-Core,Java,Core)