找到java线程的pid
ps -ef | grep java
打印jstack输出信息到文件
jstack pid > ./dump
统计
[root@server ~]# grep java.lang.Thread.State dump | awk '{print $2$3$4$5}' | sort | uniq -c
41 RUNNABLE
1 TIMED_WAITING(onobjectmonitor)
18 TIMED_WAITING(parking)
3 TIMED_WAITING(sleeping)
2 WAITING(onobjectmonitor)
45 WAITING(parking)
可以看到每种状态的线程数量,再根据具体情况,打开jstack信息文件,找到能够调优的线程状态(如WAITING(onobjectmonitor))进行优化。