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

# クラス AbstractObjectPool<E>

java.lang.Object
org.opengion.fukurou.util.AbstractObjectPool<E>

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

public abstract class AbstractObjectPool<E> extends Object
AbstractObjectPool は、生成された Object をプールするキャッシュクラスです。 サブクラスで、各クラスごとにオブジェクトを生成／初期化／終了するように各メソッドを コーディングしなおしてください。 サブクラスでは、Object createInstance() と、oid objectInitial( Object obj )、 void objectFinal( Object obj ) を オーバーライドしてください。

導入されたバージョン:
  JDK5.0,

- ## コンストラクタの概要

  コンストラクタ
  修飾子
  コンストラクタ
  説明
  `protected`
  `AbstractObjectPool()`
  デフォルトコンストラクター

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `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()`
  オブジェクトプールの要素数を返します。
  `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 MissingResourceException
    キャッシュのインスタンスを返します。 なお、拡張制限をしている場合に、最初に確保した数以上のオブジェクト生成の 要求があった場合は､ 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 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 String toString()
    内部状況を簡易的に表現した文字列を返します。
    オーバーライド:
      `toString` クラス内 `Object`
    戻り値:
      このオブジェクトプールの文字列表現
    変更履歴:
      6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD)
    このﾒｿｯﾄﾞは、nullを返しません