thread-deadlock

Java 线程死锁

现象

接口长时间无响应,线程池耗尽,CPU 可能不高;日志没有明显异常,重启后暂时恢复。jstack 能看到 Found one Java-level deadlock。

快速定位

jcmd <PID> Thread.print > threads.txt
grep -A30 -i 'deadlock' threads.txt
jstack -l <PID> | grep -A20 'BLOCKED'

查看线程数和状态:

jcmd <PID> Thread.print | grep -c 'java.lang.Thread.State'
jcmd <PID> Thread.print | grep 'java.lang.Thread.State' | sort | uniq -c

常见根因

修复

相关命令