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