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

クラス AbstractObjectPool<E>

  • 直系の既知のサブクラス:
    ProcessFactory.ProcessPool

    public abstract class AbstractObjectPool<E>
    extends java.lang.Object
    AbstractObjectPool は、生成された Object をプールするキャッシュクラスです。 サブクラスで、各クラスごとにオブジェクトを生成/初期化/終了するように各メソッドを コーディングしなおしてください。 サブクラスでは、Object createInstance() と、oid objectInitial( Object obj )、 void objectFinal( Object obj ) を オーバーライドしてください。
    バージョン
    4.0
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK5.0,
    • コンストラクタの概要

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

      すべてのメソッド インスタンス・メソッド abstractメソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      boolean clear()
      すべての要素を オブジェクトプールから削除します。
      protected abstract E createInstance()
      具体的に新しいインスタンスを生成するメソッド。
      protected void init​(int minsize, int maxsize, boolean limit)
      初期化メソッド 初期オブジェクト数、最大オブジェクト数、拡張制限を指定します。
      protected void init​(int minsize, int maxsize, boolean limit, int limitTime)
      初期化メソッド 初期オブジェクト数、初期配列数、拡張制限、オブジェクトの寿命を指定します。
      boolean isEmpty()
      オブジェクトプールが要素を持たないかどうかを判定します。
      E newInstance()
      キャッシュのインスタンスを返します。
      protected void objectFinal​(E obj)
      オブジェクトプールから削除するときに呼ばれます。
      protected E objectInitial​(E obj)
      オブジェクトプールに戻すとき(release するとき)に呼ばれます。
      void release​(E obj)
      オブジェクトを、オブジェクトプールに戻します。
      void remove​(E obj)
      オブジェクトを、オブジェクトプールから削除します。
      int size()
      オブジェクトプールの要素数を返します。
      java.lang.String toString()
      内部状況を簡易的に表現した文字列を返します。
      • クラスから継承されたメソッド 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 - オブジェクトの寿命の時間制限値(秒)
        関連項目:
        init( int , int , boolean )
        変更履歴:
        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()
                      throws java.util.MissingResourceException
        キャッシュのインスタンスを返します。 なお、拡張制限をしている場合に、最初に確保した数以上のオブジェクト生成の 要求があった場合は、 MissingResourceException が throw されます。 また,オブジェクトが寿命を超えている場合は、削除した後、新たに次の オブジェクトの生成を行います。
        戻り値:
        キャッシュのインスタンス
        例外:
        java.util.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 obj)
        オブジェクトを、オブジェクトプールに戻します。 戻すべきオブジェクトが null の場合は,削除されたと判断します。
        パラメータ:
        obj - オブジェクトプールに戻すオブジェクト
        変更履歴:
        6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
      • 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 void objectFinal​(E obj)
        オブジェクトプールから削除するときに呼ばれます。 このメソッドで各オブジェクトごとの終了処理を行います。 例えば、データベースコネクションであれば、close() 処理などです。 デフォルトでは、なにも行いません。
        パラメータ:
        obj - 終了処理を行うオブジェクト
        変更履歴:
        6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
      • objectInitial

        protected E objectInitial​(E obj)
        オブジェクトプールに戻すとき(release するとき)に呼ばれます。 このメソッドで各オブジェクトごとの初期処理を行います。 オブジェクトプールに戻すときには、初期化して、次の貸し出しに 対応できるように、初期処理しておく必要があります。 デフォルトでは、引数のオブジェクトをそのまま返します。
        パラメータ:
        obj - 初期処理を行うオブジェクト
        戻り値:
        初期処理を行ったオブジェクト
        変更履歴:
        6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
      • toString

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