启动一个 JVM 进程至少创建多少个线程呢?让我们来做一个实验吧!测试使用的 JDK 版本为 RedHat Open JDK 1.8.0.275。
示例代码如下:
public static void main(String[] args) { Thread.currentThread().getThreadGroup().getParent().list(); }
输出:
从图中可以看到,执行这个简单的 main() 方法共创建了 6 个线程。分别是:
– Reference Handler
– Finalizer
– Signal Dispatcher
– Attach Listener
– main
– Monitor Ctrl-Break
system 线程组包含 4 个线程 Reference Handler、Finalizer、Signal Dispatcher、Attach Listener 和一个线程组 main,main 线程组还包含两个线程 main 和 Monitor Ctrl-Break。
各个线程的作用如下:
线程 | 作用 |
---|---|
Reference Handler | 处理引用类型 |
Finalizer | 负责回收时调用对象的finalize方法 |
Signal Dispatcher | 接收信号,比如kill -9 , kill -3 |
Attach Listener | 负责接收外部的命令,例如 jmap 和 jstack,执行命令并且把结果返回给发送者 |
main | 主线程 |
Monitor Ctrl-Break | 接收ctrl+c 退出信号 |
- 本文固定链接: https://weiguangli.com/archives/682
- 转载请注明: lwg0452 于 Weiguang的博客 发表
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!