Hi Prasanth,
Threads that are in a BLOCKED state originated from java.util.concurrent.ThreadPoolExecutor and blocked in sun.misc.Unsafe.park(...) method. As per my understanding, the threads being parked are from the thread pool related to the blocking queue. Threads that are "parked" coming from pools are simply waiting for a task to be assigned. Also, they really consume 0% CPU so I don't think this should be a problem. sun.misc.Unsafe.park(...) is basically like Thread.wait, but it uses os code, so it is not exposed to us.
It is possible though that you have a concurrency issue making it so your queue is blocking itself forever.
There are way too many threads in the pool than the demand for the workload. You might have to configure a lower value to the min thread pool size.
Edit your Comment