パッケージ org.opengion.fukurou.util

クラス AbstractObjectPool<E>

java.lang.Object
org.opengion.fukurou.util.AbstractObjectPool<E>
型パラメータ:
E - 型オブジェクト
直系の既知のサブクラス:
ProcessFactory.ProcessPool

public abstract class AbstractObjectPool<E> extends Object
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,
  • コンストラクタの概要

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    デフォルトコンストラクター
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    boolean
    すべての要素を オブジェクトプールから削除します。
    protected abstract E
    具体的に新しいインスタンスを生成するメソッド。
    protected void
    init(int minsize, int maxsize, boolean limit)
    初期化メソッド 初期オブジェクト数、最大オブジェクト数、拡張制限を指定します。
    protected void
    init(int minsize, int maxsize, boolean limit, int limitTime)
    初期化メソッド 初期オブジェクト数、初期配列数、拡張制限、オブジェクトの寿命を指定します。
    boolean
    オブジェクトプールが要素を持たないかどうかを判定します。
    キャッシュのインスタンスを返します。
    protected abstract void
    オブジェクトプールから削除するときに呼ばれます。
    void
    release(E obj2)
    オブジェクトを、オブジェクトプールに戻します。
    void
    remove(E obj)
    オブジェクトを、オブジェクトプールから削除します。
    int
    オブジェクトプールの要素数を返します。
    内部状況を簡易的に表現した文字列を返します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • AbstractObjectPool

      protected AbstractObjectPool()
      デフォルトコンストラクター
      変更履歴:
      6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
  • メソッドの詳細

    • init

      protected void init(int minsize, int maxsize, boolean limit)
      初期化メソッド 初期オブジェクト数、最大オブジェクト数、拡張制限を指定します。 初期オブジェクト数は、プールを作成すると同時に確保するオブジェクトの個数です。 オブジェクトの生成に時間がかかり、かつ、必ず複数使用するのであれば、 予め複数確保しておけば、パフォーマンスが向上します。 最大オブジェクト数は、拡張制限が、無制限(limit = false )の場合は、 無視されます。制限ありの場合は、この値を上限に、オブジェクトを増やします。 拡張制限は、生成するオブジェクト数に制限をかけるかどうかを指定します。 一般に、コネクション等のリソースを確保する場合は、拡張制限を加えて、 生成するオブジェクト数を制限します。
      パラメータ:
      minsize - 初期オブジェクト数
      maxsize - 最大オブジェクト数
      limit - 拡張制限(true)/無制限(false)
      変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
    • init

      protected void init(int minsize, int maxsize, boolean limit, int limitTime)
      初期化メソッド 初期オブジェクト数、初期配列数、拡張制限、オブジェクトの寿命を指定します。 初期オブジェクト数、初期配列数、拡張制限、までは、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

      public E 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

      protected abstract E createInstance()
      具体的に新しいインスタンスを生成するメソッド。 サブクラスで具体的に記述する必要があります。
      戻り値:
      新しいインスタンス
    • release

      public void release(E obj2)
      オブジェクトを、オブジェクトプールに戻します。 戻すべきオブジェクトが 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

      public void remove(E obj)
      オブジェクトを、オブジェクトプールから削除します。 remove されるオブジェクトは、すでにキャッシュから取り出された後なので、 そのまま、何もしなければ自然消滅(GC)されます。 自然消滅する前に、objectFinal( Object ) が呼ばれます。 生成されたオブジェクトの総数も、ひとつ減らします。
      パラメータ:
      obj - 削除するオブジェクト
      変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
    • size

      public int size()
      オブジェクトプールの要素数を返します。
      戻り値:
      プールの要素数
      変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
    • isEmpty

      public boolean isEmpty()
      オブジェクトプールが要素を持たないかどうかを判定します。
      戻り値:
      オブジェクトプールが要素を持っていない、つまりそのサイズが 0 の場合にだけ true、そうでない場合は false
      変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
    • clear

      public boolean clear()
      すべての要素を オブジェクトプールから削除します。 貸し出し中のオブジェクトは、クリアしません。よって、返り値は、 すべてのオブジェクトをクリアできた場合は、true、貸し出し中の オブジェクトが存在した場合(クリアできなかった場合)は、false です。
      戻り値:
      すべてクリア(true)/貸し出し中のオブジェクトが残っている(false)
      変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
    • objectFinal

      protected abstract void objectFinal(E obj)
      オブジェクトプールから削除するときに呼ばれます。 このメソッドで各オブジェクトごとの終了処理を行います。 例えば、データベースコネクションであれば、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

      public String toString()
      内部状況を簡易的に表現した文字列を返します。
      オーバーライド:
      toString クラス内 Object
      戻り値:
      このオブジェクトプールの文字列表現
      変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
      このメソッドは、nullを返しません