java 通用物件池的實現

2021-08-18 00:05:35 字數 2152 閱讀 2517

本文以apache common-pools為例

pooledobject(可被池化的物件)

預設實現defaultpooledobject,裡面封裝了乙個真正的使用者需要池化的物件object。

其中defaultpooledobject裡面有兩個方法:

exception borrowedby :用於記錄上次呼叫borrow時的堆疊,用於跟蹤**呼叫情況

@override

public

synchronized

boolean

allocate()

return

true;

} else

if (state == pooledobjectstate.eviction)

// todo if validating and testonborrow == true then pre-allocate for

// performance

return

false;

}

exception usedby: 同上,記錄use時的堆疊

@override

public

void

use()

pooledobjectstate

物件的狀態,也即生命週期

pooledobjectfactory(物件建立工廠)

一般需要程式設計師繼承basepooledobjectfactory,建立需要池化的物件:

private

static

class

shardedjedisfactory

implements

pooledobjectfactory

@override

public pooledobjectmakeobject() throws exception

@override

public

void

destroyobject(pooledobjectpooledshardedjedis) throws exception catch (exception e)

jedis.disconnect();

} catch (exception e) }}

}@override

public

boolean

validateobject(pooledobjectpooledshardedjedis)

}return

true;

} catch (exception ex)

}@override

public

void

activateobject(pooledobjectp) throws exception

@override

public

void

passivateobject(pooledobjectp) throws exception

}

genericobjectpoolconfig(物件池配置)

abandonedconfig(防止物件洩露)

evict執行緒流程

Unity 通用 物件池管理

一般情況下我們使用物件池是物體的建立和管理。但在很多情況下需要批量建立的物體需要做一些邏輯處理,這樣我們需要記錄物件池對應的資料狀態。所以我們就直接把物件作為管理物件,這樣我們可以在物件裡面做一些邏輯處理還能便於物體管理。作為物件管理類,那麼我們必須要乙個同乙個父類作為管理的類別。在父類裡面包含一些...

java通用返回物件

中定義了 三個成員變數 status 返回的狀態碼 msg 返回的資訊 data 返回的物件.設定為泛型,以便擴充套件,服務端需要返回各種不一樣的data資料,由此接收.該類中私有了構造方法,保證了該類的準確性.定義了開發環境中需要返回的幾種型別 status status msg status d...

Java物件池示例

物件池使用的基本思路是 將用過的物件儲存起來,等下一次需要這種物件的時候,再拿出來重複使用,從而在一定程度上減少頻繁建立物件所造成的開銷。並非所有物件都適合拿來池化 因為維護物件池也要造成一定開銷。對生成時開銷不大的物件進行池化,反而可能會出現 維護物件池的開銷 大於 生成新物件的開銷 從而使效能降...