2017-02-02 9 views
1

廃止予定のCommonPoolTargetSourceには、setWhenExhaustedActionName()を使用して定義できる一連の動作がありました。 CommonsPool2TargetSourceとCommonsPool2 BaseGenericObjectPoolは、それがプールは私がずっと出ていることを考え出しblockWhenExhaustedを無効にするとCommonsPool2TargetSourceは何をしますか?

を排気する際にborrowObject()メソッドが呼び出されたときにブロックするかどうかを

戻り値として「getBlockWhenExhausted」を記述ラップ!これはどうしますか?

CommonsPoolを "WHEN_EXHAUSTED_GROW"に設定したときと同じようにプールが拡張されるのですか、それとも単に例外がスローされますか?何が起こるのですか?

答えて

0

ObjectPool.borrowObject()のドキュメントに記載されているように、使い果たされると実装は依存します。

プールが使い果たされたときのこのメソッドの動作は、厳密には指定されていません(実装によって指定されています)。 CommonsPool2付属

GenericObjectPool実装はgetBlockWhenExhausted()がtrueの場合はブロックし、すぐにそれ以外NoSuchElementExceptionがスローされます。 (GenericObjectPoolborrowObject(long borrowMaxWaitMillis)に記載されているように)

はプールが(なし利用可能アイドルインスタンスと新しいものを作成するために、無容量)疲れている場合、このメソッドははNoSuchElementExceptionをブロック(BaseGenericObjectPool.getBlockWhenExhausted()がtrueの場合)、またはスローしますか(BaseGenericObjectPool.getBlockWhenExhausted()がfalseの場合)。 BaseGenericObjectPool.getBlockWhenExhausted()がtrueのときにこのメソッドがブロックする時間は、borrowMaxWaitMillisパラメーターに渡される値によって決まります。

利用できず、最も可能性が高いので、プールは全く排出しませんでした-1にmaxTotalを設定することによって到達される「WHEN_EXHAUSTED_GROW」と同様の挙動。

関連する問題