GenericKeyedObjectPool
非同期アイドル オブジェクトの削除を有効にしたアプリケーションで複数のスレッドを使用している場合、バックグラウンドで実行される "アイドル オブジェクトの削除" スレッドはいくつですか?
複数GenericKeyedObjectPool
の がエビクション スレッドを 1 つだけ作成しますか?それともプールごとに個別のスレッドを作成しますか?
GenericKeyedObjectPool
非同期アイドル オブジェクトの削除を有効にしたアプリケーションで複数のスレッドを使用している場合、バックグラウンドで実行される "アイドル オブジェクトの削除" スレッドはいくつですか?
複数GenericKeyedObjectPool
の がエビクション スレッドを 1 つだけ作成しますか?それともプールごとに個別のスレッドを作成しますか?
現在の実装 (v1.6) は static timerを使用するため、実際には複数のプールが 1 つのエビクション スレッドのみを使用します。(それらが同じクラスローダーにロードされていると仮定します。) で確認できます。jstack
タイマー スレッドは 1 つだけです。
"Timer-0" daemon prio=10 tid=0x7bce5000 nid=0x1ca5 in Object.wait() [0x7b23d000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xa26c0fe8> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Timer.java:509)
- locked <0xa26c0fe8> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:462)
Locked ownable synchronizers:
- None