SpringBoot中非同步請求的使用

2022-06-25 19:18:12 字數 1189 閱讀 5303

一.前言

正常的http請求是由乙個執行緒從頭到尾來處理,當如果有請求耗時過長,而我們容器的執行緒數量是有限的,但所有執行緒都在使用,就會造成新的請求無法進行。

非同步請求可以實現當http請求進入到程式,可以先釋放容器的執行緒,由程式內部的執行緒進行處理,等處理完成後,再調回容器的執行緒來返回請求結果。這就可以在一定程度上提高系統的吞吐量。

二.實現

1.使用servlet方法來實現

});//設定超時時間

asynccontext.settimeout(3000000);//

5分鐘 asynccontext.start(() ->

catch

(exception e)

//非同步請求完成通知

//此時整個請求才完成

asynccontext.complete();

});//此時之類 request的執行緒連線已經釋放了

system.out.println("

主線程:

" +thread.currentthread().getname());

}2.在springboot中可以使用callable、deferredresult、webaysnctask。這裡只舉callable的**例子。

/callable")

public callablecallable()

};}三.總結

1.非同步請求可以有效提供系統的吞吐量。

2.非同步請求是通過容器執行緒和程式執行緒的分配來提高效率。

Spring Boot 非同步任務

可以使用非同步的方式載入方法 只需在專案入口上定義 enableasync 開啟非同步註解功能 以及某個需要非同步方法上面定義 async註解 即可1.專案入口上定義 enableasync 開啟非同步註解功能 enableasync 開啟非同步註解功能 public class 2.使用 asyn...

springboot非同步任務

enablerabbit 開啟rabbit enableasync 開啟非同步 public class 新建乙個service,此service休眠3秒 package com.example.vuelog.service.task import org.springframework.sched...

springboot非同步任務

springboot非同步任務 使用 async 告訴spring這是乙個非同步方法 service public class asynservice catch interruptedexception e system.out.println 資料處理中 主函式使用 enableasync開啟非...