使用線程池有幾個優點:
Java開發,我們用的是JDK環境,開發框架基本是Spring family bucket。線程池的基本原理在JDK,JDK1.5增加線程池相關類,在核心jar包rt.jar中,在java.util.concurrent下
看看jdk中的線程池繼承關系類圖:
在JDK,使用ThreadPoolExecutor創建了幾個具有不同功能的線程池。妳可以把它們關掉看看:
看看有什麽特點:
從上面可以看出,它們各有特點,但是阿裏巴巴開發代碼並不建議使用上述線程池,因為它們可能會浪費服務資源,所以建議使用ThreadPoolExecutor定制的線程池。
Spring用Java封裝了線程池,並提供了默認實現,也可以自定義線程池。我壹般用Spring的線程池包。
春天的線程池和JDK的基本壹樣,在org的包裝下。springframework.scheduling .並發。
對應JDK,Spring的頂層接口是TaskExecutor,實現了JDK的Executor接口。
Spring中常用的線程池是ThreadPoolTaskExecutor,用Java實現。JDK和外包的util.concurrent.threadpool執行程序。
要使用線程池,首先要了解線程池中的壹些參數:
因為我們常用ThreadPoolExecutor線程池,所以去這個類找壹下。
上面配置了線程池,生成了線程池bean,由Spring容器管理,註入時可以使用。
SpringBoot線程池是在org中的jar spring-boot-autoconfigure中自動組裝的。spring framework . boot . auto configure . task . taskexecutionautoconfiguration類。
自動裝配條件:
當壹個新任務提交到線程池時,線程池的主要流程如下:
核心線程的數量-->;線程隊列-->;最大線程數-->;拒絕策略
因此,在使用線程池時,有必要註意: