1. 程式人生 > >springboot2.x簡單詳細教程--整合定時任務和非同步任務處理(第十章)

springboot2.x簡單詳細教程--整合定時任務和非同步任務處理(第十章)

一、SpringBoot定時任務schedule講解
 

   簡介:講解什麼是定時任務和常見定時任務區別

        1、常見定時任務 Java自帶的java.util.Timer類
            timer:配置比較麻煩,時間延後問題
            timertask:不推薦

        2、Quartz框架(java.util.Timer 改造而來

            配置更簡單
            xml或者註解

             用springMVC可使用該框架

        3、SpringBoot使用註解方式開啟定時任務(springboot自帶
            1)啟動類裡面 @EnableScheduling開啟定時任務,自動掃描
            2)定時任務業務類 加註解 @Component被容器掃描
            3)定時執行的方法加上註解 @Scheduled(fixedRate=2000) 定期執行一次
    
案例一

1)

2)結果 2秒執行一次

不同時間建立和不同間隔時間執行

二、SpringBoot常用定時任務配置實戰


    簡介:SpringBoot常用定時任務表示式配置和線上生成器

        1、cron 定時任務表示式 @Scheduled(cron="*/1 * * * * *") 表示每秒
        

 1)2秒執行一次

2)

3)

  crontab 工具  https://tool.lu/crontab/

1)線上工具的測試

2)

3)cron 表示式   https://www.cnblogs.com/X-World/p/6113910.html


     
        3、fixedDelay: 上一次執行結束時間點後xx秒再次執行

        1) 

     

    2)睡4秒再執行

3)


        4、fixedDelayString:  字串形式,可以通過配置檔案指定

注意:fixedRateString也是一樣的

三、SpringBoot2.x非同步任務實戰(核心知識

簡介:講解什麼是非同步任務,和使用SpringBoot2.x開發非同步任務實戰
   使用非同步原因:  每一個任務非同步執行,減少我們的等待時間,提高系統效率

   1、什麼是非同步任務和使用場景適用於處理log、傳送郵件、簡訊……等
           使用者下單: 下單介面->後臺會自動進行的業務

                    查庫存 100
                    餘額校驗 150
                    風控使用者100(假使用者
                    ....


        2、啟動類裡面使用@EnableAsync註解開啟功能,自動掃描
        
        3、定義非同步任務類並使用@Component標記元件被容器掃描,非同步方法加上@Async
          

             1)建一個非同步任務類

            

2)Async原始碼

3)controller

4)訪問看結果 

5)假如需要獲取幾個任務的響應結果

在類上加註解

6)AsyncResult原始碼

7)controller

8)結果

9)將Async注掉就變成同步了


 

10)總耗時6s

 

總結:


                1)要把非同步任務封裝到類裡面,不能直接寫到Controller
                2)增加Future<String> 返回結果 AsyncResult<String>("task執行完成");  
                3)如果需要拿到結果 需要判斷全部的 task.isDone()