最近遇到应用服务器不能访问的问题,通过抓取堆栈,发现应用服务器中用于处理请求的线程都处在WAINTING 或者BLOCKED状态,通过分析有45个线程调用ehcache的get()函数,获取读锁(然后一直WAITING,等待一把锁(假设为锁A)),还有3个线程调用ehcache的removeAll()函数,获取写锁(也是一直WAITING,等待锁A)。这个48线程导致了其他线程的阻塞。
而在整个堆栈中只有parking waiting for A的信息,而没有任何的线程持有锁A,问题是这个锁A去哪了,为什么所有的线程都拿不到它?
请大神们帮忙!!!