


//volatile不保证原子性
public class VDemo01 {
//原子类的int 不用加锁也一样
private volatile static AtomicInteger num = new AtomicInteger();
public static void add(){
//num++;
num.getAndIncrement(); // num++
}
public static void main(String[] args) {
for (int i = 0; i < 20; i++) {
new Thread(()->{
for (int j= 1; j <= 1000; j++) {
add();
}
}).start();
}
while (Thread.activeCount()>2){
Thread.yield();
}
System.out.println(Thread.currentThread().getName()+" "+num);
}
}
本文通过一个示例代码展示了在Java中,volatile关键字并不保证操作的原子性,而AtomicInteger类的getAndIncrement()方法则提供了原子性操作。在多线程环境下,使用AtomicInteger可以避免并发问题,确保计数的正确性。文章讨论了并发编程中volatile与原子类的区别,强调了在高并发场景下选择合适的数据类型的重要性。
881

被折叠的 条评论
为什么被折叠?



