Springboot的非同步執行緒池

2021-09-12 01:52:04 字數 821 閱讀 3197

1、定義執行緒池

@configuration

@enableasync

public class asynclistenerconfig implements asyncconfigurer

@override

public asyncuncaughtexceptionhandler getasyncuncaughtexceptionhandler()

}

上面我們通過使用threadpooltaskexecutor建立了乙個執行緒池,同時設定了以下這些引數:

說明:setwaitfortaskstocompleteonshutdown(true)該方法就是這裡的關鍵,用來設定執行緒池關閉的時候等待所有任務都完成再繼續銷毀其他的bean,這樣這些非同步任務的銷毀就會先於redis執行緒池的銷毀。同時,這裡還設定了setawaitterminationseconds(60),該方法用來設定執行緒池中任務的等待時間,如果超過這個時候還沒有銷毀就強制銷毀,以確保應用最後能夠被關閉,而不是阻塞住。

2、使用這個執行緒池

@slf4j

@component

public class task

@async("taskexecutor")

public void dotasktwo() throws exception

@async("taskexecutor")

public void dotaskthree() throws exception

}

spring boot 非同步執行緒池

在專案中,有乙個非同步方法 async註解。當多使用者呼叫該非同步方法時,通過日誌跟蹤 發現最多只有兩個執行緒在非同步執行,其它的任務都在等待狀態。非同步配置檔案如下所示,懷疑是corepoolsize影響,故將其修改為5.後來網上發現如下解釋 重點講解 其中比較容易讓人誤解的是 corepools...

springBoot非同步執行緒操作

springboot專案中我們常常會有比較耗時的操作,而前端不關心你的處理結果時。比如給使用者傳送郵件,此時,我們就可以在使用者操作時使用非同步來完成傳送郵件,不需要等郵件傳送完成後再給到前端相應。下面詳細介紹一下具體步驟 configuration enableasync public class...

springboot 合理建立非同步執行緒

springboot 合理建立非同步支援的方法 建立非同步執行緒池 return bean aaataskexecutor 必須 通過 async aaataskexecutor 找到該執行緒池 public executor creatthreadpool1 建立非同步執行緒池 return be...