多个GenericKeyedObjectPools使用相同的逐出线程吗?

时间:2012-11-11 22:34:18

标签: java apache-commons-pool

如果我在启用了异步空闲对象驱逐的应用程序中使用多个GenericKeyedObjectPool,那么有多少“空闲对象驱逐”线程将在后台运行?

多个GenericKeyedObjectPool只创建一个逐出线程,还是为每个池创建单独的线程?

1 个答案:

答案 0 :(得分:0)

The current implementation (v1.6) uses a static timer,所以实际上多个池只使用一个驱逐线程。 (Assuming that they are loaded into the same classloader。)您可以使用jstack进行检查,只有一个计时器线程:

"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