首页新闻找找看学习计划

spring task scheduler 定时任务

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-09-04 15:43

项目需要实现由用户设定定时发送通知的功能,为了实现动态设定定时执行任务,我用了以下方式:首先配置scheduler

<task:annotation-driven scheduler="scheduler" />

<task:scheduler id="scheduler" />

然后再建立类如下:

@Component("notificationBatchJobs")
public class NotificationBatchJobs implements InitializingBean {

@Autowired
private LateNotificationReceiveTimeDao receiveTimeDao;

@Autowired
private TaskScheduler scheduler;

@SuppressWarnings("rawtypes")
private ScheduledFuture future;

public void cancelTask() {
if (future != null) {
future.cancel(true);
}
}

public void startTask(String cronTime) {
future = scheduler.schedule(new SchedulSendNotificationTask(),
new CronTrigger(cronTime));

}

@Override
public void afterPropertiesSet() throws Exception {
startTask("0 1 12 * * ?");
}

private class SchedulSendNotificationTask implements Runnable {

@Override
public void run() {
System.err.println(" do something ");
}
}

}

startTask方法是每天12点01分执行run方法。

问题:只执行了一次,次日没有执行。比如今天27号12点01分执行了run方法,然后我修改本地计算机的时间,改为28号12点00分,待到01分的时候却没有执行run方法,请问是为何呢?

cwcls的主页 cwcls | 初学一级 | 园豆:27
提问于:2014-08-27 15:17
< >
分享
所有回答(1)
0

spring定时器是有自己内部的计时器的,只有开始计时的时候获取一次本地时间,便开始以自己的计时器进行计时,而不会再次读取本地计算机的时间,所以修改本地计算机时间是没有效果的。

cwcls | 园豆:27 (初学一级) | 2014-09-04 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册