synchronized无法成功锁定多个线程?

代码如下:
开启10个线程,对inc方法加synchronized进行锁定,但是输出的是0-10的随机数。并不是10,这是为什么呢?
public class testVolatile {

public static int count = 0;

public  static synchronized void inc() {
         try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
         count++;        
}

public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                testVolatile.inc();
            }
        }).start();
    }

    synchronized (testVolatile.class) {
        System.out.println("运行结果:Counter.count=" + testVolatile.count);
    } 
}

}

1个回答

你这测试方法是错的,输出的结果是主线程输出的,结果只能表明有多少个线程跑过了

wlz766107
辛幻柏 请采纳,谢谢
大约 3 年之前 回复
NICOROUBIN
MissFortune 多谢提醒,瞬间理解。谢谢啦
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!