Using Timer and TimerTask.
无法理解为什么此配置在部署时立即启动任务(在基于 Web 的 Spring 应用程序中使用它)。它应该在 today.getTime 开始,然后必须每天重复。
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 3);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
MyTask task = new MyTask();
Timer timerJob = new Timer();
timerJob.schedule(task, today.getTime(),
TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS));
我认为
,最好使用CronTrigger或具有24小时重复间隔的触发器。
CronTrigger的例子:
public class CronTriggerRunner {
public static void main(String args[]) throws SchedulerException, Exception {
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
JobDetail job = JobBuilder.newJob(ClassToRun.class).withIdentity("jobName", "group").build();
// Starting CronTrigger
String exp = "0 0 9 * * ?"; //trigger format, everyday at 9:00 am
Trigger trigger = TriggerBuilder.newTrigger()
.startNow()
.withSchedule(
CronScheduleBuilder.cronSchedule(exp))
.build();
// Planning job detail
scheduler.scheduleJob(job, trigger);
// starting scheduler
scheduler.start();
}
}
类运行.java
public class ClassToRun implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try{
//doSomething
}
catch(Exception e){
e.printStackTrace(System.out);
}
}
}
每天上午 9:00,public void execute()
功能将做一些:D
希望这会有所帮助。请让我知道。
编辑:您需要下载并添加2个jar文件。 1) 石英-2.2.1.jar 2) slf4j-api-1.6.6.jar