良好的线程命名习惯,有助于排查线程相关的问题。

对于jvm启动的线程,它都有良好的命名,我们使用jstack一看便知,这些线程的作用是什么。我们写一段简答的程序来验证一下:

这段代码里,没有创建任何用户线程,我们使用jstack命令,可以看看jvm都会启动哪些线程:

我们从线程信息第一列,就可以很清晰的看到,它们的作用是什么,如main方法入口线程,gc线程等等。

如果我们在工作中,需要使用新的线程或线程池来运行任务,那么一定要记得给线程清晰的命名,如果不个线程命名,系统会自动给它按序号命名,例如下面的代码:

通过jstack命令,我们可以到如下线程信息:

jvm给线程的命名是Thread-序号,我们不能直接从线程名称知道它的作用,如果我们给它进行了清晰的命名,在使用Jstack命令时,就可以根据名称来排查了。例如,我们给支付的后台任务线程,命名为Payment Task Thread 加上序号 ,这样就很清晰了。


推荐阅读:
相关文章