• Bug
  • Status: Closed
  • 1 Critical
  • Resolution: Fixed
  • hsingh
  • Reporter: amiller
  • December 01, 2009
  • 0
  • Watchers: 1
  • January 17, 2013
  • December 02, 2009


From stack trace, saw a thread like this that is assumed to be an executor related thread in Ehcache:

“pool-1-thread-1” prio=6 tid=0x04454400 nid=0x1230 waiting on condition [0x04e7f000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0bc9bf88> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619)

Executors seem to be created in two places in Ehcache core:

  • Cache has an executorService field that is initialized in getExecutorService()
  • MulticastKeepaliveHeartbeatReceiver has a processingThreadPool initialized in init()

Should use a thread factory for these to get the threads named better.


Abhishek Singh 2009-12-02

Fixed in rev-1479