クラス AbstractObjectPool<E>
java.lang.Object
org.opengion.fukurou.util.AbstractObjectPool<E>
- 型パラメータ:
E
- 型オブジェクト
- 直系の既知のサブクラス:
ProcessFactory.ProcessPool
AbstractObjectPool は、生成された Object をプールするキャッシュクラスです。
サブクラスで、各クラスごとにオブジェクトを生成/初期化/終了するように各メソッドを
コーディングしなおしてください。
サブクラスでは、Object createInstance() と、void objectInitial( Object obj )、8.5.4.2 (2024/01/12)
void objectFinal( Object obj ) を オーバーライドしてください。
※ 8.5.4.2 (2024/01/12) objectInitial の廃止(実質 使われていなかった)と、objectFinal の abstract 化
- 導入されたバージョン:
- JDK5.0,
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明boolean
clear()
すべての要素を オブジェクトプールから削除します。protected abstract E
具体的に新しいインスタンスを生成するメソッド。protected void
init
(int minsize, int maxsize, boolean limit) 初期化メソッド 初期オブジェクト数、最大オブジェクト数、拡張制限を指定します。protected void
init
(int minsize, int maxsize, boolean limit, int limitTime) 初期化メソッド 初期オブジェクト数、初期配列数、拡張制限、オブジェクトの寿命を指定します。boolean
isEmpty()
オブジェクトプールが要素を持たないかどうかを判定します。キャッシュのインスタンスを返します。protected abstract void
objectFinal
(E obj) オブジェクトプールから削除するときに呼ばれます。void
オブジェクトを、オブジェクトプールに戻します。void
オブジェクトを、オブジェクトプールから削除します。int
size()
オブジェクトプールの要素数を返します。toString()
内部状況を簡易的に表現した文字列を返します。
-
コンストラクタの詳細
-
AbstractObjectPool
protected AbstractObjectPool()デフォルトコンストラクター- 変更履歴:
- 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
-
-
メソッドの詳細
-
init
初期化メソッド 初期オブジェクト数、最大オブジェクト数、拡張制限を指定します。 初期オブジェクト数は、プールを作成すると同時に確保するオブジェクトの個数です。 オブジェクトの生成に時間がかかり、かつ、必ず複数使用するのであれば、 予め複数確保しておけば、パフォーマンスが向上します。 最大オブジェクト数は、拡張制限が、無制限(limit = false )の場合は、 無視されます。制限ありの場合は、この値を上限に、オブジェクトを増やします。 拡張制限は、生成するオブジェクト数に制限をかけるかどうかを指定します。 一般に、コネクション等のリソースを確保する場合は、拡張制限を加えて、 生成するオブジェクト数を制限します。- パラメータ:
minsize
- 初期オブジェクト数maxsize
- 最大オブジェクト数limit
- 拡張制限(true)/無制限(false)- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
-
init
初期化メソッド 初期オブジェクト数、初期配列数、拡張制限、オブジェクトの寿命を指定します。 初期オブジェクト数、初期配列数、拡張制限、までは、init
を参照してください。 オブジェクトの寿命は、生成された時間からの経過時間(秒)だけ、キャッシュしておく 場合に使用します。 例えば、コネクション等で、長期間のプーリングがリソースを圧迫する場合や、 接続側自身が、タイマーで切断する場合など、オブジェクトの生存期間を 指定して管理する必要があります。- パラメータ:
minsize
- 初期オブジェクト数maxsize
- 初期配列数limit
- 拡張制限(true)/無制限(false)limitTime
- オブジェクトの寿命の時間制限値(秒)- 関連項目:
- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD), 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。
-
newInstance
キャッシュのインスタンスを返します。 なお、拡張制限をしている場合に、最初に確保した数以上のオブジェクト生成の 要求があった場合は、 MissingResourceException が throw されます。 また、オブジェクトが寿命を超えている場合は、削除した後、新たに次の オブジェクトの生成を行います。- 戻り値:
- キャッシュのインスタンス
- 例外:
MissingResourceException
- 拡張制限により、新しいインスタンスを生成できない場合- 変更履歴:
- 4.0.0.1 (2007/12/03) 生成リミットチェックを厳密に行う。, 4.0.0.1 (2007/12/03) 生成リミットエラー時に、タイムアウトをチェックする。, 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
-
createInstance
具体的に新しいインスタンスを生成するメソッド。 サブクラスで具体的に記述する必要があります。- 戻り値:
- 新しいインスタンス
-
release
オブジェクトを、オブジェクトプールに戻します。 戻すべきオブジェクトが null の場合は、削除されたと判断します。- パラメータ:
obj2
- オブジェクトプールに戻すオブジェクト- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD), 8.5.4.2 (2024/01/12) objectInitial 廃止
-
remove
オブジェクトを、オブジェクトプールから削除します。 remove されるオブジェクトは、すでにキャッシュから取り出された後なので、 そのまま、何もしなければ自然消滅(GC)されます。 自然消滅する前に、objectFinal( Object ) が呼ばれます。 生成されたオブジェクトの総数も、ひとつ減らします。- パラメータ:
obj
- 削除するオブジェクト- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
-
size
オブジェクトプールの要素数を返します。- 戻り値:
- プールの要素数
- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
-
isEmpty
オブジェクトプールが要素を持たないかどうかを判定します。- 戻り値:
- オブジェクトプールが要素を持っていない、つまりそのサイズが 0 の場合にだけ true、そうでない場合は false
- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
-
clear
すべての要素を オブジェクトプールから削除します。 貸し出し中のオブジェクトは、クリアしません。よって、返り値は、 すべてのオブジェクトをクリアできた場合は、true、貸し出し中の オブジェクトが存在した場合(クリアできなかった場合)は、false です。- 戻り値:
- すべてクリア(true)/貸し出し中のオブジェクトが残っている(false)
- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
-
objectFinal
オブジェクトプールから削除するときに呼ばれます。 このメソッドで各オブジェクトごとの終了処理を行います。 例えば、データベースコネクションであれば、close() 処理などです。 デフォルトでは、なにも行いません。- パラメータ:
obj
- 終了処理を行うオブジェクト- 変更履歴:
- 6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD), 8.5.4.2 (2024/01/12) abstract メソッド化
-
toString
内部状況を簡易的に表現した文字列を返します。
-