我們在服務(wù)器開發(fā)的過程中,往往會有一些對象,它的創(chuàng)建和初始化需要的時間比較長,比如數(shù)據(jù)庫連接,網(wǎng)絡(luò)IO,大數(shù)據(jù)對象等。在大量使用這些對象時,如果不采用一些技術(shù)優(yōu)化,就會造成一些不可忽略的性能影響。一種辦法就是使用對象池,每次創(chuàng)建的對象并不實際銷毀,而是緩存在對象池中,下次使用的時候,不用再重新創(chuàng)建,直接從對象池的緩存中取即可。為了避免重新造輪子,我們可以使用優(yōu)秀的開源對象池化組件apache-common-pool2,它對對象池化操作進行了很好的封裝,我們只需要根據(jù)自己的業(yè)務(wù)需求重寫或?qū)崿F(xiàn)部分接口即可,使用它可以快速的創(chuàng)建一個方便,簡單,強大對象連接池管理類。
一,common-pool2簡介
首先是下載這個組件,使用maven引入下面依賴即可:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
Common-pool2中的代碼不是太多,有幾個種要的接口和實現(xiàn)類,common-pool2使用的是面向接口的編程,它為我們提供的是一個抽象的對象池管理方式,所以根據(jù)我們業(yè)務(wù)的不同,我們需要重寫或?qū)崿F(xiàn)一些方法和接口,我們一個一個看一下。
1,GenericObjectPool
這個是對象池實現(xiàn)的核心類,它實現(xiàn)了對對象池的管理,是一個基本的對象池實現(xiàn),一般情況下,我們可以直接使用。在使用這個類的時候,我們需要傳入兩個重要的參數(shù):Generic