为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Thread.activeCount() > 1 不能运行

while (Thread.activeCount() > 2){
    Thread.yield();
}

设置成大于2 就能运行了,Java1.8

正在回答

4 回答

可参考 http://blog.csdn.net/xiaolinzi007/article/details/44487851

具体为什么idea返回2,是因为多了个monitor ctrlbreak线程。

1 回复 有任何疑惑可以回复我~

有一种线程叫做守护线程,程序员可以自己设置某个自定义线程为守护线程(通过一个方法),值得一提的是无论你启动哪个java程序,JVM都会启动某些底层守护线程比如:Low Memory Detector用来监测管理内存  CompilerThread0用来启动什么编辑器的 ATTach Listeser 用来干嘛我也不知道

0 回复 有任何疑惑可以回复我~
#1

哀幻暝

然而并不能解释为什么你就不能用>1的问题
2016-07-21 回复 有任何疑惑可以回复我~

我也遇到了,通过JVM的工具,看了下,后台活动确实不是一个线程,望视频主能给解答?

0 回复 有任何疑惑可以回复我~

Thread.activeCount() 方法返回活动线程的当前线程的线程组中的数量,已你现在的程序(线程中间过程短,一下就结束了)所以你Thread.activeCount()时为1,你可以System.out.println(Thread.activeCount())控制台输出试试

0 回复 有任何疑惑可以回复我~
#1

qq_MrmOnkEy_03331110

我也碰到了和题主一样的问题,题主的问题是“不能运行”,是指整个程序不能运行,会一直卡在while 循环里面出不来,原因是因为Thread.activeCount() 一直为2,所以出不来,我在main方法一开始输出Thread.activeCount(),我发现输出结果竟然是2!!(讲道理应该是1的)
2016-05-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么Thread.activeCount() > 1 不能运行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信