在开发过程中因为框架是自己公司构建的不支持spring bean 注解的任务管理,随手编写了一个自定义的任务。
使用使用timer 进行任务发布,timer 提供的方法支持间隔时间进行执行,所以如果设置当前时间第一个参数为0,如果需要在指定时间后进行执行,第一个参数为执行时间,执行时间为毫秒数(底层代码为 System.currentTimeMillis()+delay),第二个参数为间隔时间 。
public static void main(String[] args) throws ParseException {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(111);
}
},0,1000);
}
使用timer 进行任务发布,并支持cron 的引入,如果不用cron 表达式,定时任务会随着时间进行间隔执行所以我建议采用定时任务用cron 进行执行
import org.apache.logging.log4j.core.util.CronExpression;
import java.text.ParseException;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class BaseTask {
private void crawlingData(String cron) throws ParseException {
Timer timer = new Timer();
Date date = new Date();
Date newDate;
CronExpression expression = new CronExpression(cron);
while(true){
newDate = date = expression.getNextValidTimeAfter(date);
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(111);
}
},newDate);
}
}
public static void main(String[] args) throws ParseException {
BaseTask bt = new BaseTask();
bt.crawlingData("0/10 * * * * ? *");
}
}