国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - 詳解SpringBoot定時任務(wù)說明

詳解SpringBoot定時任務(wù)說明

2020-08-25 11:07loongshawn Java教程

本篇文章主要介紹了詳解SpringBoot定時任務(wù)說明,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 定時任務(wù)實現(xiàn)方式

定時任務(wù)實現(xiàn)方式:

  • Java自帶的java.util.Timer類,這個類允許你調(diào)度一個java.util.TimerTask任務(wù)。使用這種方式可以讓你的程序按照某一個頻度執(zhí)行,但不能在指定時間運行。一般用的較少,這篇文章將不做詳細(xì)介紹。
  • 使用Quartz,這是一個功能比較強(qiáng)大的的調(diào)度器,可以讓你的程序在指定時間執(zhí)行,也可以按照某一個頻度執(zhí)行,配置起來稍顯復(fù)雜,有空介紹。
  • SpringBoot自帶的Scheduled,可以將它看成一個輕量級的Quartz,而且使用起來比Quartz簡單許多,本文主要介紹。

定時任務(wù)執(zhí)行方式:

  • 單線程(串行)
  • 多線程(并行)

2. 創(chuàng)建定時任務(wù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.autonavi.task.test;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import com.autonavi.task.ScheduledTasks;
 
@Component
public class ScheduledTest {
 
  private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
 
  @Scheduled(cron="0 0/2 8-20 * * ?")
  public void executeFileDownLoadTask() {
 
    // 間隔2分鐘,執(zhí)行工單上傳任務(wù)  
    Thread current = Thread.currentThread();
    System.out.println("定時任務(wù)1:"+current.getId());
    logger.info("ScheduledTest.executeFileDownLoadTask 定時任務(wù)1:"+current.getId()+ ",name:"+current.getName());
  }
 
  @Scheduled(cron="0 0/1 8-20 * * ?")
  public void executeUploadTask() {
 
    // 間隔1分鐘,執(zhí)行工單上傳任務(wù)      
    Thread current = Thread.currentThread();
    System.out.println("定時任務(wù)2:"+current.getId());
    logger.info("ScheduledTest.executeUploadTask 定時任務(wù)2:"+current.getId() + ",name:"+current.getName());
  }
 
  @Scheduled(cron="0 0/3 5-23 * * ?")
  public void executeUploadBackTask() {
 
    // 間隔3分鐘,執(zhí)行工單上傳任務(wù)            
    Thread current = Thread.currentThread();
    System.out.println("定時任務(wù)3:"+current.getId());
    logger.info("ScheduledTest.executeUploadBackTask 定時任務(wù)3:"+current.getId()+ ",name:"+current.getName());
  
 
}

@Scheduled 注解用于標(biāo)注這個方法是一個定時任務(wù)的方法,使用@Scheduled(cron=”…”) 表達(dá)式來設(shè)置定時任務(wù)。

?
1
2
3
4
5
6
// 每天早八點到晚八點,間隔2分鐘執(zhí)行任務(wù)
@Scheduled(cron="0 0/2 8-20 * * ?")
// 每天早八點到晚八點,間隔3分鐘執(zhí)行任務(wù)
@Scheduled(cron="0 0/3 8-20 * * ?")
// 每天早八點到晚八點,間隔1分鐘執(zhí)行任務(wù)
@Scheduled(cron="0 0/1 8-20 * * ?")

3. 啟動定時任務(wù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ComponentScan
@EnableAutoConfiguration
@EnableScheduling
@Configuration
public class App {
 
  private static final Logger logger = LoggerFactory.getLogger(App.class);
 
  public static void main(String[] args) {
 
    SpringApplication.run(App.class, args);  
    logger.info("oops");           
  
}

其中 @EnableScheduling 注解的作用是發(fā)現(xiàn)注解@Scheduled的任務(wù)并后臺執(zhí)行。

4. 執(zhí)行結(jié)果

?
1
2
3
4
5
6
7
8
9
2016-02-14-14-51 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTest.executeUploadBackTask 定時任務(wù)3:15,name:pool-2-thread-1
   定時任務(wù)2:15
2016-02-14-14-51 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTest.executeUploadTask 定時任務(wù)2:15,name:pool-2-thread-1
   定時任務(wù)1:15
2016-02-14-14-52 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTest.executeFileDownLoadTask 定時任務(wù)1:15,name:pool-2-thread-1
   定時任務(wù)2:15
2016-02-14-14-52 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTest.executeUploadTask 定時任務(wù)2:15,name:pool-2-thread-1
   定時任務(wù)2:15
2016-02-14-14-53 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTest.executeUploadTask 定時任務(wù)2:15,name:pool-2-thread-1

5. 串行任務(wù)

上述方法可以實現(xiàn)定時任務(wù),方式也比較簡單,不用配置什么文件啥的,但你會發(fā)現(xiàn)一個問題,就是不論定時任務(wù)被安排在多少個class類中,其依然是單線程執(zhí)行定時任務(wù)(串行任務(wù)):

?
1
2
3
2016-02-14-15-05 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTasks.executeUploadTask 定時任務(wù)1:15,name:pool-2-thread-1
   定時任務(wù)2:15
2016-02-14-15-06 [pool-2-thread-1] [com.autonavi.task.ScheduledTasks] [INFO] - ScheduledTest.executeUploadTask 定時任務(wù)2:15,name:pool-2-thread-1

上述執(zhí)行結(jié)果中ScheduledTest和ScheduledTasks是兩個獨立類,都有各自定時任務(wù),但運行時起Thread Name都是一樣的pool-2-thread-1,因此每個定時任務(wù)若要新啟一個線程,需要自行編寫實現(xiàn)或者配置文件。

SpringBoot定時任務(wù)默認(rèn)單線程,多線程需要自行實現(xiàn)或配置文件

6. 并行任務(wù)

有時候會碰到不同業(yè)務(wù)的定時任務(wù),這時候利用并行任務(wù)處理要妥當(dāng),采用多線程任務(wù)。只需要配置SpringBoot的配置文件:applicationContext.xml,添加如下內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:task="http://www.springframework.org/schema/task"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
 
  <!-- Enables the Spring Task @Scheduled programming model -->
  <task:executor id="executor" pool-size="5" />
  <task:scheduler id="scheduler" pool-size="10" />
  <task:annotation-driven executor="executor" scheduler="scheduler" />
 
</beans>

添加紅框中的內(nèi)容

詳解SpringBoot定時任務(wù)說明

同時注意補(bǔ)充title中遺漏的網(wǎng)址。

效果如下,每個調(diào)度處理一個任務(wù),每個調(diào)度也是一個子線程:

詳解SpringBoot定時任務(wù)說明

有關(guān)executor、scheduler參數(shù)的介紹見文中的34.5 The Task Namespace節(jié)。

7. 基于springboot的定時任務(wù)工程樣例

詳解SpringBoot定時任務(wù)說明

demo工程下載地址

8. 動態(tài)定時任務(wù)說明

有時候需要實現(xiàn)動態(tài)定時任務(wù),即工程啟動后,可以實現(xiàn)啟動和關(guān)閉任務(wù),同時也可以設(shè)置定時計劃。這就需要利用到quartz,spring官方對于這個包下面各類的介紹,后續(xù)抽空配置下這類業(yè)務(wù)的實現(xiàn):
http://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/scheduling/quartz/package-summary.html

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/loongshawn/article/details/50663393

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久久成人av | 久久思久久 | 亚洲视频欧美视频 | 操她视频网站 | 起碰在线视频 | 亚洲激情网站 | 日韩av免费在线播放 | 欧美精品一区视频 | 国产欧美在线播放 | 精品日韩一区二区 | 91视频免费网站 | 91麻豆精品国产91久久久资源速度 | 国产伦精品一区二区三区四区视频 | 粉嫩视频在线观看 | 在线免费视频一区二区 | 国产精品福利午夜在线观看 | av久草| 亚洲福利 | 成人高h视频 | 日本a视频在线观看 | 91xx在线观看| 久久久久成人精品免费播放动漫 | 亚洲男人av | 国产欧美一区二区精品性色 | 成人片免费看 | 国产伦精品一区二区三区照片91 | 欧美日一区二区 | 日韩视频精品 | 亚洲视频一区二区 | 亚洲综合一区二区三区 | 一区二区三区 | 一级毛片免费一级 | 亚洲欧美在线观看 | 国产成人在线视频 | 亚洲人成在线播放 | 91精品国产91久久久久久 | 久久机热 | 国产人成精品一区二区三 | 中文字幕在线不卡 | 国产高清免费 | 可以在线观看的av网站 |