package com.zerege.oss.daemon;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import com.zerege.core.utils.DateUtil;
import com.zerege.oss.daemon.task.MyTask;
import com.zerege.oss.daemon.task.ReportTask;
/**
* 后台线程控制器
* <br>创建日期:2015-11-26
* <br><b>Copyright 2015 杭州哲瑞基信息科技有限公司 All Rights Reserved</b>
* @author suncr
* @since 1.0
* @version 1.0
*/
public class DaemonController extends Thread{
private static final Logger log = Logger.getLogger(DaemonController.class);
private long daySpan= 1000*60*60*24l;
private Date time;
/**
* 构造函数,设定任务启动时间
*/
public DaemonController() {
Date d = DateUtil.getDate("17:00", "HH:mm");
Calendar c = Calendar.getInstance();
c.setTime(d);
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.HOUR_OF_DAY, c.get(Calendar.HOUR_OF_DAY));
startTime.set(Calendar.MINUTE, c.get(Calendar.MINUTE));
startTime.set(Calendar.SECOND, 0);
//如果配置的时间早于服务器启动时间,则第二天执行
if(startTime.before(Calendar.getInstance())){
startTime.add(Calendar.DAY_OF_MONTH, 1);
}
time = startTime.getTime();
log.info("任务启动时间:"+DateUtil.getDate(time,"yyyy-MM-dd HH:mm:ss"));
}
@Override
public void run() {
Timer timer = new Timer();
TimerTask task= new TimerTask(){
@Override
public void run() {
try {
MyTask task;
task = new ReportTask();
task.start();
} catch (Exception e) {
e.printStackTrace();
}
}
};
// 以每24小时执行一次
timer.schedule(task, time, daySpan);
}
}
java 定时任务的制作
最新推荐文章于 2024-04-20 05:57:28 发布