本文主要讲解在多线程下,如何使用诊断工具jconsole、jstack、查看字节码。
jconsole
- 首先使用
win+r
快捷键调出运行窗口,然后再输入jconsole
执行。 - 然后连接自己的程序。
- 连接好后,可以在线程选项模块中查看各个线程的状态。
jstack
- 在windows环境下,可以先在cmd命令行执行
jps
用以查看相关的程序进程的pid。 - 在使用
jstack pid
命令查看线程的阻塞情况。(我们知道线程的默认名称是Thread-n,n是一个叠加的数字并从0开始叠加,所以默认情况下我们的线程名称是类似于:Thread-0、Thread-1…, 因此在输入这个命令后会输出很多内容,我们就根据线程的名称找到我们相关的线程的信息就可以了)
使用jstack诊断线程死锁
查看字节码:javap -c 目标.class文件
示例:
通常在执行命令的时候,不知道该命令的参数代表什么意思,可以通过命令 --help
查看该命令的所有参数各代表什么意思
例如: