java 注解scheduler_使用spring的@Scheduled注解执行定时任务,启动项目不输出警告
在applicationContext.xml中添加:
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd">
java代碼:
@Componentpublic classCleanExpireTokenTask {private Logger logger =LoggerFactory.getLogger(LogTag.BUSINESS);
@Scheduled(cron= "0 * * * * ?")public voidstartUpdateSaleThread(){try{
System.out.println("check token expire");
}catch(Exception e){
logger.error("Make salesReport faild",e);
}
}
}
注意:
實現類上要加注解@Component
定時器的任務方法不能有返回值
配置及啟動報錯問題參考自
2016-11-22日 安全關閉spring定時任務線程池
java代碼
@Resource(name = "myScheduler")
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
/**
* 等待正在執行的定時任務執行完畢,不再執行新的定時任務,
*/
public void shutdown(){
threadPoolTaskScheduler.shutdown();
// 等待任務執行完畢
while(threadPoolTaskScheduler.getActiveCount() > 0){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
注:1.根據測試,通過此方式創建的定時任務,比如每分鐘0秒執行任務,如果上一分鐘0秒執行的任務還沒執行完,則這次任務就不會啟動。
2.在ThreadPoolTaskScheduler調用shutdown方法后,不會殺掉正在執行的任務,已啟動的定時任務可以執行完,這時如果定時任務執行Thread.sleep方法,會拋?InterruptedException,需要注意。
參考自
總結
以上是生活随笔為你收集整理的java 注解scheduler_使用spring的@Scheduled注解执行定时任务,启动项目不输出警告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可转债触发赎回为什么不赎回?
- 下一篇: java中PL层_安装pljava -