既然用了 springboot ,那自然得發揮 spring 的特性,所以需要 spring 來幫我們管理執行緒池:
@configuration
public class treadpoolconfig
}
使用時:
@resource(name = "consumerqueuethreadpool")
private executorservice consumerqueuethreadpool;
@override
public void execute()
}
執行緒池大小可以考慮如下說法進行配置:
高併發、任務執行時間短的業務,執行緒池執行緒數可以設定為cpu核數+1,減少執行緒上下文的切換
併發不高、任務執行時間長的業務要區分開看:
• 假如是業務時間長集中在io操作上,也就是io密集型的任務,因為io操作並不占用cpu,所以不要讓所有的cpu閒下來,可以加大執行緒池中的執行緒數目,讓cpu處理更多的業務
• 假如是業務時間長集中在計算操作上,也就是計算密集型任務,這個就沒辦法了,和(1)一樣吧,執行緒池中的執行緒數設定得少一些,減少執行緒上下文的切換
併發高、業務執行時間長,解決這種型別任務的關鍵不在於執行緒池而在於整體架構的設計,看看這些業務裡面某些資料是否能做快取是第一步,增加伺服器是第二步,至於執行緒池的設定,設定參考(2)。
業務執行時間長的問題,也可能需要分析一下,看看能不能使用中介軟體對任務進行拆分和解耦。
Spring boot中使用多執行緒
首先bean物件由spring容器管理 其次預設的spring初始化乙個類時,其相關依賴的元件都會被初始化 然而自己new出來的類,其相關依賴的元件不會被初始化,因為繞過了spring 一 配置spring上下文 component public class implements override ...
SpringBoot中使用新執行緒傳送郵件
由於郵件的傳送是乙個阻塞操作,因此我將之放到子執行緒中完成,因此我需要在springboot中配置乙個執行緒池,如下 bean public executorservice executorservice 在配置類中提供上面這個bean即可,然後在需要用的地方將之注入即可 autowired exe...
Spring Boot中使用MongoDB資料庫
前段時間分享了關於spring boot中使用redis的文章,除了redis之後,我們在網際網路產品中還經常會用到另外一款著名的nosql資料庫mongodb。下面就來簡單介紹一下mongodb,並且通過乙個例子來介紹spring boot中對mongodb訪問的配置和使用。mongodb是乙個基...