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

运行了以后等了好久,500个线程也执行不完是为什么?

package synchronize;

public class VolatileDemo {
    private volatile int number = 0;

    public int getNumber() {
        return this.number;
    }

    public void increase() {
        this.number++;
    }
    public static void main(String[] args) {
        final VolatileDemo vd = new VolatileDemo();
        for (int i = 0; i < 500; i++) {
            new Thread(() -> vd.increase()).start();
        }
        while (Thread.activeCount() > 1) {
            Thread.yield();
        }
        System.out.println("number is " + vd.getNumber());
    }
}

这个代码在idea里面启动了以后,一直不结束是为什么?

正在回答

3 回答

改成 > 2,就可以返回了

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

idea中Thread.activeCount()返回的是2,是因为多了个monitor ctrlbreak线程。

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


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

JYChiu

有用!!谢谢
2019-06-13 回复 有任何疑惑可以回复我~

在while循环中打印出Thread.activeCount()的数量,并输出运行的线程名称,确认一下除了主线程外还有哪个线程在执行。

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

举报

0/150
提交
取消

运行了以后等了好久,500个线程也执行不完是为什么?

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