public class Main {
public static void main(String[] args) {
Thread.currentThread().getThreadGroup().list();
}
}
运行结果:
可见除了主线程(“Thread[main]”),还有一个 “Monitor Ctrl-Break” 线程,这应该是 IDEA 通过反射的方式,伴随你的程序一起启动的对你程序的监控线程。这并不算是一个问题,官方的 API 也说了 Thread.activeCount() 返回的只是一个估计值,所以你并不能依靠这个值来判断当前有多少线程在运行。
通过
Thread.currentThread().getThreadGroup().list()
可以列出当前线程所在组有哪些线程,线程的输出格式为 [线程名称,线程的优先级,线程所在线程组的名称]:运行结果:

可见除了主线程(“Thread[main]”),还有一个 “Monitor Ctrl-Break” 线程,这应该是 IDEA 通过反射的方式,伴随你的程序一起启动的对你程序的监控线程。这并不算是一个问题,官方的 API 也说了
Thread.activeCount()
返回的只是一个估计值,所以你并不能依靠这个值来判断当前有多少线程在运行。