您的位置:首页 > 编程语言 > Java开发

java 定时任务的制作

2016-01-21 15:15 274 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: