java 输出hello world 会有几个线程

先直接说结论 五个或者6个

测试代码如下

点击查看代码
 ThreadMXBean bean = ManagementFactory.getThreadMXBean();
  System.out.println("hello world : "+ bean.getThreadCount());

idea hello world : 6

分析原因

  • java 中存在线程组概念 既可以包含线程 也可以包含线程组
点击查看代码
  Thread.currentThread().getThreadGroup().getParent().list();

结果如下

点击查看代码
ava.lang.ThreadGroup[name=system,maxpri=10]
    Thread[Reference Handler,10,system]
    Thread[Finalizer,8,system]
    Thread[Signal Dispatcher,9,system]
    Thread[Attach Listener,5,system]
    java.lang.ThreadGroup[name=main,maxpri=10]
        Thread[main,5,main]
        Thread[Monitor Ctrl-Break,5,main]
* 线程组 守护线程 system 优先级为 10 * Reference Handler 处理引用对象本身(弱引用、软引用、幻想引用)的垃圾回收 * Finalizer 垃圾回收前 调用对象的Finalize 方法 * Attach Listener 接受外的参数 一些调用工具 jps、jmap、jstack * Signal Dispatcher 收到的指令分发个模块 执行并返回结果 * 活跃线程 main * 包含 main * Monitor Ctrl-Break 主要idea 用户打印

查看活跃线程

点击查看代码
System.out.println("hello world : "+ Thread.activeCount());
* 答案就是 2 下面两个 mian 线程组
posted @ 2022-09-30 17:43  vx_guanchaoguo0  阅读(27)  评论(0编辑  收藏  举报