springboot非同步的兩種方法

2022-09-11 13:03:12 字數 1290 閱讀 6771

1. 在啟動類中開啟非同步

加上註解:

@enableasync

2. 非同步的類上需要加@component,如果這個類是非同步的話需要在類上加@async

如果某個方法是則只需要在方法上加上註解

3.注意點:

1)要把非同步任務封裝到類裡面,不能直接寫到controller

2)增加future返回結果 asyncresult("task執行完成");

3)如果需要拿到結果 需要判斷全部的 task.isdone()

4) @async使用,必須是public方法 必須是非static方法,如果返回報錯則是環繞增強的問題,需要返回物件,如object

1. threadpoolutils 工具類

import

j**a.util.concurrent.linkedblockingqueue;

import

j**a.util.concurrent.threadpoolexecutor;

import

j**a.util.concurrent.timeunit;

public

class

threadpoolutils }}

return

pool;

}/*** 建立執行緒池**

@param

corepoolsize 核心執行緒數量

* @param

maxthreadsize 最大執行緒數

* @return

*/private

static threadpoolexecutor createpool(int corepoolsize, int

maxthreadsize)

}

view code

2. 使用執行緒池建立執行緒

threadpoolexecutor threadpool =threadpoolutils.getthreadpool();

threadpool.submit(

new callable()

});

view code

3. threadpool.submit()是可以獲取返回結果的,call方法裡返回的資料,

4. feature feature = submit.get()

submit.get方法是乙個阻塞方法,如果開啟的執行緒內的邏輯沒有處理完成,它會等開啟的執行緒處理完成。

submit.get(10, timeunit.seconds)//設定執行緒的超時時間。

android 兩種非同步方式

使用asynctask 開啟子執行緒獲取伺服器資料,更新介面ui 非同步任務 後台執行,耗時的操作都放在這裡,相當於thread的run方法 override protected string doinbackground string.params 在執行後台任務之後,可以在這更改ui介面,相當於...

非同步任務佇列的兩種處理方法

先對這裡的非同步任務做下解釋 這裡的意思是,該任務有幾種狀態,建立,等待,執行,結束 其中等待是因為,該任務要正常執行,需要其他執行緒 或程序 提供相應的條件 或觸發事件 然後才會執行。針對這種要非同步處理 等待 的任務佇列管理模式,個人理解有兩種處理方法。第一種 也是最常規的一種,定義乙個佇列,建...

springboot的單元測試(總結兩種)

springboot的單元測試,這裡介紹兩種方式,一種是在測試類中新增註解 另一種是在啟動的main方法中繼承commandlinerunner介面 也可以寫在其他方法中 如 對檢視資料庫的連線池資訊 進行單元測試 1.在類上使用註解 runwith springrunner.class sprin...