問題現(xiàn)象:
在IntelliJ IDEA執(zhí)行簡單的main方法,調(diào)用Thread.activeCount()方法輸出的數(shù)量為2,而非預(yù)期的1(main方法本身).
而直接適用java命令行執(zhí)行或者eclipse執(zhí)行卻沒有這個(gè)問題。
問題分析:
用如下方法打印當(dāng)前線程組中的線程:
Thread.currentThread().getThreadGroup().list();
結(jié)果如下:
java.lang.ThreadGroup[name=main,maxpri=10]
? ? Thread[main,5,main]
? ? Thread[Monitor Ctrl-Break,5,main]
可以看到除了main以外赠堵,還多了一個(gè)預(yù)期外的?Monitor Ctrl-Break?線程碾褂。
問題原因:
IntelliJ IDEA執(zhí)行用戶代碼的時(shí)候榆俺,實(shí)際是通過反射方式去調(diào)用骑歹,而與此同時(shí)會(huì)創(chuàng)建一個(gè)Monitor Ctrl-Break?用于監(jiān)控目的预烙。
參考資料: