volatile不是线程安全的
public class VolatileTest {
private volatile int i = 0;
public void add() {
i++;
}
public int getI() {
return this.i;
}
public static void main(String[] args) {
final VolatileTest volatileTest = new VolatileTest();
for (int i = 0; i < 10000; i++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep((int)Math.random() * 20);
} catch (InterruptedException e) {
e.printStackTrace();
}
volatileTest.add();
}
}).start();
}
System.out.println(volatileTest.getI());
}
}
read-update-write并不是线程安全的

浙公网安备 33010602011771号