找出某个线程出现死锁的原因
jstack [option] pid
第一步先找出Java进程ID
jps

第二步找出该进程内最耗费CPU的线程 top -Hp pid
(根据某个字段排序:先按f,进入字段选择选项,上下键选择,然后s确认,q退出,就实现了排序)

第3步 把耗时最久的线程Id用16进制表示
比如是772线程

第4步 jstack 输出
jstack 321 | grep 304

可以看到这里是条件等待 正常的等待
如果是异常的等待 可以进一步看jstack日志,看是哪一步的堆栈卡住的