volatitle 不具有原子性代码
程序员文章站
2022-03-03 16:14:18
...
public class TestVolatitle_1 {
public volatile static int j;
public int add (){
synchronized (TestVolatitle_1.class){
return j++;
}
}
public static void main(String[] args) throws InterruptedException {
TestVolatitle_1 testVolatitle_1 = new TestVolatitle_1();
for (int i = 0; i < 100; i++) {
new Thread(){
@Override
public void run() {
// testVolatitle_1.add();
/*synchronized (TestVolatitle_1.class){
j++;
}*/
for (int k = 0; k < 2000; k++) {
j++ ;
}
}
}.start();
}
Thread.sleep(3000);
// System.out.println(testVolatitle_1.j);
System.out.println(j);
}
}
最终输出结果 197238
执行的程序加上代码块 执行正常
synchronized (TestVolatitle_1.class){
for (int k = 0; k < 2000; k++) {
j++ ;
}
}
下一篇: python简明教程