java定时循环任务
目的:工作中一定会遇到,每天(每隔一段时间)更新数据库中的某些字段或者每天跑一下某个任务时。这篇文章就是解决上述问题的。代码如下
1.定时任务
@Component
public class TimerManager {
public void start(){
System.out.println("调用此方法");
new TimerManager();
}
//时间间隔(1分钟)
private static final long PERIOD_DAY = 1*60*1000;
public TimerManager(){
Calendar calendar = Calendar.getInstance();
//设置时间 时分秒
calendar.set(Calendar.HOUR_OF_DAY,13);
calendar.set(Calendar.MINUTE,59);
calendar.set(Calendar.SECOND,0);
Date date = calendar.getTime(); //第一次执行定时任务的时间
if(date.before(new Date())){ //这个判断就是如果此时的时间已经过了设置开始运行的时间,那么就明天这个时候在运行
date = this.addDay(date,1);
}
Timer timer = new Timer();
/*具体执行任务*/
Task task = new Task();
timer.schedule(task,date,PERIOD_DAY);
}
//增加减少天数
public Date addDay(Date date,int num){
Calendar startDt= Calendar.getInstance();
startDt.setTime(date);
startDt.add(Calendar.DAY_OF_MONTH,num);
return startDt.getTime();
}
}
2. 具体任务
public class Task extends TimerTask {
@Override
public void run() {
/*循环执行的方法,可以做什么呢,比如定时更新数据库,定时删除过期数据等等*/
//这里只是做一个简单的输出
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(new Date());
System.out.println(time+": 又执行了一次");
}
}
3. 看一下我写这篇文章,输出了几次
如果是定时更新数据库的数据,还是用procedures比较好。有什么问题留言。