1

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

多个GenericKeyedObjectPools 只创建一个驱逐线程还是为每个池创建单独的线程?

4

1 回答 1

0

当前实现 (v1.6) 使用静态计时器,因此实际上多个池仅使用一个驱逐线程。(假设它们被加载到同一个类加载器中。)您可以检查它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
于 2012-11-11T22:34:17.977 回答