You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Thread.activeCount()返回2而非预期的1?附Java测试代码

Java中Thread.activeCount()返回2的原因

先看你的测试代码:

public class Prac {
    public static void main(String[] args) {
        System.out.println(Thread.activeCount());
        System.out.println(Thread.currentThread().getName());
    }
}

你看到结果为2的原因很明确:

  • Thread.activeCount() 统计的是当前线程所属线程组内的活跃线程数量,不是仅统计当前线程。
  • 运行main方法时,JVM除了启动执行main逻辑的主线程(名称通常为main),还会自动创建一个名为Finalizer的线程。这个线程和主线程同属一个线程组,负责处理对象的finalize()方法,处于活跃状态,因此会被activeCount()统计在内,最终结果就是2。

如果你的需求是仅获取当前线程本身,这个方法并不适用;如果是统计当前线程组的活跃线程,这个结果完全符合JVM的运行逻辑。

内容的提问来源于stack exchange,提问作者NotAGoodCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:32:01