java实现循环每天多个时间段定时任务,每个时间段运行不同的任务,并且每天自动循环,重启也会自动执行,只需要修改你想定时的时间就行,可根据自己项目具体修改,原创,转载请说明出处。
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
/**
*
* @author 我爱女神李忠英
*
*每天自动循环完成多个时间段不同任务
*
*/
public class Test {
static long time0 = 0;
static long time8 = 0;
static long time10 = 0;
static long time22 = 0;
static long nowTime = 0;
public static void main(String[] args) {
//启动一个定时任务
new Timer("dingshiTask").schedule(new TimerTask() {
@Override
public void run() {
nowTime=System.currentTimeMillis();
//经过的时间大于24小时,说明已经到了第二天,则自动重新设置
if(nowTime-time0>=24*60*60*1000){
/*** 设置【今天】定时任务的时间 ***/
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);//当天0点
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
time0 = calendar.getTimeInMillis();
Calendar calendar8 = Calendar.getInstance();
calendar8.set(Calendar.HOUR_OF_DAY, 8);//当天8点
calendar8.set(Calendar.MINUTE, 0);
calendar8.set(Calendar.SECOND, 0);
time8 = calendar8.getTimeInMillis();
Calendar calendar10 = Calendar.getInstance();
calendar10.set(Calendar.HOUR_OF_DAY, 10);//当天10点
calendar10.set(Calendar.MINUTE, 0);
calendar10.set(Calendar.SECOND, 0);
time10 = calendar10.getTimeInMillis();
Calendar calendar22 = Calendar.getInstance();
calendar22.set(Calendar.HOUR_OF_DAY, 22);//当天22点
calendar22.set(Calendar.MINUTE, 0);
calendar22.set(Calendar.SECOND, 0);
time22 = calendar22.getTimeInMillis();
}
if(nowTime-time0>0&&nowTime-time8<0){//0点到8点之间
System.out.println("0-8点,执行这里的任务,要设置执行的次数,自己设置一个flag");
}else if(nowTime-time8>=0&&nowTime-time10<0){//8点到10点之间
System.out.println("8-10点,执行这里的任务,要设置执行的次数,自己设置一个flag");
}else if(nowTime-time10>=0&&nowTime-time22<0){//10点到22点之间
System.out.println("10-22点,执行这里的任务,要设置执行的次数,自己设置一个flag");
}else if(nowTime-time22>=0){//22点到0点之间
System.out.println("22-0点,执行这里的任务,要设置执行的次数,自己设置一个flag");
}
}
}, 1000,10000);//前面的第一个参数是1秒钟后开始运行定时任务,后面是每间隔10秒钟去执行一次任务,根据自己需要修改间隔时间
}
}