一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - spring-boot通過@Scheduled配置定時任務及定時任務@Scheduled注解的方法

spring-boot通過@Scheduled配置定時任務及定時任務@Scheduled注解的方法

2021-02-06 12:09yizw Java教程

這篇文章主要介紹了spring-boot通過@Scheduled配置定時任務,文中還給大家介紹了springboot 定時任務@Scheduled注解的方法,需要的朋友可以參考下

串行的定時任務

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Component
public class ScheduledTimer {
 private Logger logger = Logger.getLogger(this.getClass());
 /**
 * 定時任務,1分鐘執行1次,更新潛在客戶超時客戶共享狀態
 */
 @Scheduled(cron="0 0/1 8-20 * * ?")
 public void executeUpdateCuTask() {
 Thread current = Thread.currentThread();
 logger.info(" 定時任務1:"+current.getId()+ ",name:"+current.getName());
 }
 @Scheduled(cron="0 0/1 8-20 * * ?")
 public void executeGetRepayTask() {
 Thread current = Thread.currentThread();
 logger.info(" 定時任務2:"+current.getId()+ ",name:"+current.getName());
 }
}

并行的定時任務需要添加配置文件

因為spring-boot的目的就是干掉配置文件,我在網上看到的很多都是通過配置文件來實現的,這里通過代碼配置實現:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Configuration
public class ScheduleConfig implements SchedulingConfigurer{
 @Override
 public void configureTasks(ScheduledTaskRegistrar taskRegistrar){
 TaskScheduler taskScheduler = taskScheduler();
 taskRegistrar.setTaskScheduler(taskScheduler);
 }
 @Bean(destroyMethod = "shutdown")
 public ThreadPoolTaskScheduler taskScheduler() {
 ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
 scheduler.setPoolSize(20);
 scheduler.setThreadNamePrefix("task-");
 scheduler.setAwaitTerminationSeconds(60);
 scheduler.setWaitForTasksToCompleteOnShutdown(true);
 return scheduler;
 }
}

網上教程說的需要在啟動類上加上@EnableScheduling注解來發現注解@Scheduled的任務并后臺執行。

可能我沒有通過啟動類是通過外部tomcat啟動的項目,所以沒有加這個注解也能實現定時任務

下面看下springboot 定時任務@Scheduled注解

需要定時器的地方好像還挺多. 之前項目中有用到使用定時器循環訂單時間,然后將超時的訂單狀態更改.

springboot的@Scheduled注解能夠很快速完成我們需要的定時任務.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Component
public class ExampleTimer {
 SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); 
 /*每100秒執行一次*/
 @Scheduled(fixedRate = 100000)
 public void timerRate() {
  System.out.println("我是:timerRate");
 }
 /*第一次10秒后執行,當執行完后2秒再執行*/
 @Scheduled(initialDelay = 10000, fixedDelay = 2000)
 public void timerInit() {
  System.out.println("init : "+dateFormat.format(new Date()));
 }
 /*每天15:39:00時執行*/
 @Scheduled(cron = "0 39 15 * * ? ")
 public void timerCron() {
  System.out.println("current time : "+ dateFormat.format(new Date()));
 }
}

其中需要注意的是:fixedRate和fixedDelay這兩個參數開始計時的時間不一樣.如果需要調用的方法執行時間比較長, 這時差別就能體現出來.

fixedRate:上一次開始執行時間點后再次執行;

fixedDelay:上一次執行完畢時間點后再次執行;

還發現還有一種方法是調用配置文件的方法.

?
1
2
3
4
@Scheduled(fixedDelayString = "${jobs.fixedDelay}")
 public void getTask1() {
 System.out.println("任務1,從配置文件加載任務信息,當前時間:" + dateFormat.format(new Date()));
 }

總結

以上所述是小編給大家介紹的spring-boot通過@Scheduled配置定時任務及定時任務@Scheduled注解的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/yizw/archive/2017/11/17/7850310.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲va久久久噜噜噜久久狠狠 | 男女视频在线观看 | 美女尿口照片 | ssni-497新任美脚女教师 | 风间由美理论片在线观看 | 欧美人与日本人xx在线视频 | 日本漫画大全之工之口 | 无码人妻精品一区二区蜜桃在线看 | 日韩视频在线免费观看 | 精品综合一区二区三区 | 99久久这里只有精品 | 免费看麻豆视频 | 日韩小视频在线观看 | 麻豆网站在线看 | 四大美女思春艳史片 | 短篇小说肉 | 亚洲 欧美 日韩 国产 视频 | 成人网免费视频 | 九九九精品视频 | 国产成人啪精品午夜在线观看 | 福利久草 | 日韩在线视频一区二区三区 | 四虎影院网站 | 星星动漫在线观看无删减 | 日本人成动漫网站在线观看 | 精品综合一区二区三区 | 国产精品毛片久久久久久久 | 国产原创精品 | 国产精品久久香蕉免费播放 | 动漫美女人物被黄漫小说 | 天堂va在线| 水多多www视频在线观看高清 | 加勒比福利 | 果冻传媒在线观看的 | 99九九精品视频 | 国产福利在线免费观看 | 暖暖免费高清完整版观看日本 | 美女脱了内裤让男生玩屁股 | 亚洲国产精品嫩草影院久久 | 无码区国产区在线播放 | 国产精品高清一区二区三区不卡 |