亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot定時任務和異步任務怎么實現

發布時間:2022-02-24 10:06:35 來源:億速云 閱讀:159 作者:iii 欄目:開發技術

這篇文章主要介紹“springboot定時任務和異步任務怎么實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“springboot定時任務和異步任務怎么實現”文章能幫助大家解決問題。

異步任務簡單案例

在我們開發項目時,常常會用到異步處理任務,比如我們在網站上發送郵件,后臺會去發送郵件,此時會造成前臺響應不動,直到郵件發送完畢,響應才會成功,所以我們一般會采用多線程的方式去處理這些任務。

  1. 新建一個service

  1. 創建AsyncService

@Service
    public class AsyncService {

    
       public void hello(){
           try {
               Thread.sleep(3000);
          } catch (InterruptedException e) {
               e.printStackTrace();
          }
           System.out.println("業務進行中~~");
      }
    }
  1. 創建controller

  1. controller包下創建一個AsyncController

@RestController
    public class AsyncController {

    
       @Autowired
       AsyncService asyncService;

    
       @GetMapping("/hello")
       public String hello(){//調用方法后會延遲3秒在頁面顯示Success
           asyncService.hello();
           return "success";
      }

    
    }

此時訪問Localhost:8080/hello的情況是:延遲3秒后,在頁面輸出Success,在后臺會輸出業務進行中~~

新問題:如果想頁面直接輸出信息“Success”,而讓這個hello方法直接在后臺用多線程操作,就需要加上@Async注解,這樣spring boot就會自己開一個線程池進行調用

改進:給AsyncService加上注解

@Async//告訴Spring這是一個異步方法
    public void hello(){
       try {
           Thread.sleep(3000);
      } catch (InterruptedException e) {
           e.printStackTrace();
      }
       System.out.println("業務進行中~~");
    }

但是要讓這個注解起作用,還需要在入口文件中開啟異步注解功能

@EnableAsync //開啟異步注解功能
@SpringBootApplication
    public class SpringbootTaskApplication {
           public static void main(String[] args) {
               SpringApplication.run(SpringbootTaskApplication.class, args);
          }
    }

此時再次測試,發現頁面直接輸出了Success,但是后臺仍然是3秒后輸出業務進行中

定時任務簡單案例

工作中常常要設置一些定時任務,比如每天在某個時間分析一遍日志

所以Spring提供了異步執行任務調度的方式,提供了兩個接口。

TaskExecutor接口

TaskScheduler接口

兩個注解:

? @EnableScheduling

? @Scheduled

創建一個ScheduleService,里面編寫一個hello方法,讓它定時執行

@Service
publicclassScheduledService{


    //秒分時日月周幾
    @Scheduled(cron="0 * * * * ?")
    //這里需要學習一些cron表達式的語法,明白時間如何設置,這里的意思是每當時間到0秒時就執行一次
    publicvoidhello(){
        System.out.println("hello/////");
    }
}

要使用定時功能,還需要在入口文件中加上@EnableScheduling,表明開啟定時任務功能

@SpringBootApplication
    @EnableScheduling//開啟定時任務注解功能
    @EnableAsync//開啟異步注解功能
    publicclassSpringbootTaskApplication{

    
    publicstaticvoidmain(String[]args){
    SpringApplication.run(SpringbootTaskApplication.class,args);
    }

    
    }

此時測試運行,發現每當時間為0秒時就會在后臺打印出 hello////

關于“springboot定時任務和異步任務怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰顺县| 商丘市| 尉氏县| 犍为县| 济源市| 泰来县| 涿州市| 海南省| 鸡西市| 崇州市| 额济纳旗| 安陆市| 镇安县| 广灵县| 衡阳市| 纳雍县| 织金县| 华坪县| 壤塘县| 富平县| 万盛区| 黄梅县| 崇仁县| 开化县| 阿瓦提县| 柳河县| 天峻县| 阿坝县| 上犹县| 灵台县| 安阳县| 新巴尔虎左旗| 长治市| 灵宝市| 绥芬河市| 新绛县| 民县| 万山特区| 襄垣县| 浙江省| 拉萨市|