问题现象:
在IntelliJ IDEA执行简单的main方法,调用Thread.activeCount()方法输出的数量为2,而非预期的1(main方法本身).
而直接适用java命令行执行或者eclipse执行却没有这个问题。
问题分析:
用如下方法打印当前线程组中的线程:
Thread.currentThread().getThreadGroup().list();
结果如下:
java.lang.ThreadGroup[name=main,maxpri=10]
Thread[main,5,main]
Thread[Monitor Ctrl-Break,5,main]
问题原因:
IntelliJ IDEA执行用户代码的时候,实际是通过反射方式去调用,而与此同时会创建一个Monitor Ctrl-Break 用于监控目的。