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

来源:4-2 volatile不能保证原子性(上)

隔壁王爷爷

2015-04-01 15:14

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

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

写回答 关注

4回答

  • 慕婉清3525975
    2017-07-03 19:45:53

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

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

  • 哀幻暝
    2016-07-21 11:05:30

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

    哀幻暝

    然而并不能解释为什么你就不能用>1的问题

    2016-07-21 11:09:03

    共 1 条回复 >

  • yangliang
    2016-06-04 22:03:44

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

  • Crazy丶魂
    2015-04-01 15:31:57

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

    qq_Mrm...

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

    2016-05-09 11:22:52

    共 1 条回复 >

细说Java多线程之内存可见性

用两种方式实现内存可见性,代领大家深层次学习Java中的内存

55910 学习 · 74 问题

查看课程

相似问题