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