问答详情
源自:4-2 volatile不能保证原子性(上)

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

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

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

提问者:隔壁王爷爷 2015-04-01 15:14

个回答

  • 慕婉清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 用来干嘛我也不知道

  • 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())控制台输出试试