title: Theads in a pool gets into blocked state when pool fills up
body: <p>I have an application that has a threadpool size of 20 and whenever all the threads in the pool is exhausted the threads get into blocked state forever essentially browning out the application. The application works fine when the pool is partially filled. Thread dump shows that the threads were blocked in running an async callable, and there isnt any stack info regarding where the callable is at though. What should i be looking at to figure out why the threads get into blocked state whenever the pool fills up. </p>
  
  <p>The dump also says no deadlock was detected.
  I use executor service for thread management.</p>
  
  <p>Threaddump:</p>
  
  <pre><code>Thread 25903: (state = BLOCKED)
   - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
   - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=186 (Compiled frame)
   - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=2043 (Compiled frame)
   - java.util.concurrent.LinkedBlockingQueue.take() @bci=29, line=442 (Compiled frame)
   - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=156, line=1068 (Compiled frame)
   - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1130 (Interpreted frame)
   - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=615 (Interpreted frame)
   - java.lang.Thread.run() @bci=11, line=745 (Interpreted frame)
  
  Thread 25889: (state = BLOCKED)
   - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
   - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
  
  Thread 25888: (state = BLOCKED)
   - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
   - java.util.TimerThread.mainLoop() @bci=201, line=552 (Compiled frame)
   - java.util.TimerThread.run() @bci=1, line=505 (Interpreted frame)
  
  Thread 25857: (state = BLOCKED)
   - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
   - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=186 (Compiled frame)
   - java.util.concurrent.FutureTask.awaitDone(boolean, long) @bci=165, line=425 (Compiled frame)
   - java.util.concurrent.FutureTask.get() @bci=13, line=187 (Interpreted frame)
   - dummy1.dummy2.dummy3.ValueLoaderFactory$Builder.build() @bci=16, line=271 (Interpreted frame)
  </code></pre>