为何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
相关产品推荐
相关产品推荐

