BOS*_*OSS 35 java timer scheduled-tasks
我想每天下午2点执行一份工作.java.util.Timer我可以用哪种方法安排工作?
2小时后,它将停止工作并重新安排在第二天下午2点.
Dan*_*ber 56
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 2);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
// every night at 2am you run your task
Timer timer = new Timer();
timer.schedule(new YourTask(), today.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS)); // period: 1 day
Run Code Online (Sandbox Code Playgroud)
hmj*_*mjd 23
您可以使用Timer.schedule(TimerTask task, Date firstTime, long period)方法,设置firstTime为今天下午2点,设置period为24小时:
从指定时间开始,为重复的固定延迟执行安排指定的任务.随后的执行大约定期进行,以指定的时间段分开.
BOS*_*OSS 15
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
private final static long ONCE_PER_DAY = 1000*60*60*24;
//private final static int ONE_DAY = 1;
private final static int TWO_AM = 2;
private final static int ZERO_MINUTES = 0;
@Override
public void run() {
long currennTime = System.currentTimeMillis();
long stopTime = currennTime + 2000;//provide the 2hrs time it should execute 1000*60*60*2
while(stopTime != System.currentTimeMillis()){
// Do your Job Here
System.out.println("Start Job"+stopTime);
System.out.println("End Job"+System.currentTimeMillis());
}
}
private static Date getTomorrowMorning2AM(){
Date date2am = new java.util.Date();
date2am.setHours(TWO_AM);
date2am.setMinutes(ZERO_MINUTES);
return date2am;
}
//call this method from your servlet init method
public static void startTask(){
MyTimerTask task = new MyTimerTask();
Timer timer = new Timer();
timer.schedule(task,getTomorrowMorning2AM(),1000*10);// for your case u need to give 1000*60*60*24
}
public static void main(String args[]){
startTask();
}
}
Run Code Online (Sandbox Code Playgroud)
我发现最简单的方法一直是通过Windows中的Task Scheduler和Linux中的cron。
但是对于Java,请看一下Quartz Scheduler
从他们的网站:
Quartz是功能齐全的开源作业调度服务,可以与几乎所有Java EE或Java SE应用程序集成或一起使用-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作。任务定义为标准Java组件的作业,它们实际上可以执行您可以对其执行的任何编程操作。Quartz Scheduler包含许多企业级功能,例如JTA事务和集群。
| 归档时间: |
|
| 查看次数: |
81832 次 |
| 最近记录: |