【问题标题】:Does multiple GenericKeyedObjectPools use the same eviction thread?多个 GenericKeyedObjectPools 是否使用相同的驱逐线程?
【发布时间】:2012-11-11 22:34:17
【问题描述】:

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

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

【问题讨论】:

    标签: java apache-commons-pool


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多