1、执行jps查找全部的java进程或者用ps + grep找出目标进程pid
2、top -H -p 进程ID我这里为3889,shift+h可以看出全部线程
3、这里列PID显示的线程的ID,从图片中看出,第一个线程占用最高,线程ID为3906,将线程号转换为16进制
4、jstack3889 > /tmp/aa.txt,将该进程的全部堆栈信息放入临时文件aa.txt里面
5、vi /tmp/aa.txt注意到nid=xxxx,表示线程号为多少,用十六进制表示的。
6、在vi命令模式下输入/f42,搜索线程号数据
7、最后看到搜索结果,光标闪烁在"VM Periodic Task Thread" os_prio=0 tid=0x00007fe6c010e800 nid=0xf42 waiting on condition这一行。这个线程正在等待条件满足,触发之后的程序执行。它的线程名为VM Periodic Task Thread,如果是你自己写的java代码,可以取个更有意义的名称。