并发编程系列之七多线程原子类AtomicInteger与不能保证原子性的volatile【原子在多线程下发生争抢】,原子类都在JUC里面的Atomic包下面,包括所有的原子类,基本类的7个都有的,volatile【原子在多线程下发生争抢】,之所以不能保证原子性,主要是因为工作内存与线程内存在多线程的资源分布下,交互时volatile在刷新工作内存的时候没有保证线程的前后顺序。发生谁得到谁刷新,导致原子性,顺序上发生前后不一致,导致数据不一致。
示例1.volatile不能保证原子性,主要发生在多线程的情况下,如果线程只有一个原子性问题不存在,代码主要是volatile使用时,多个线程得到的结果不能得到结果10000就是问题,注意一定要有多个线程运行时,这个问题才能被发现。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Create on 2020年1月20日下午12:02:40 @author 脚踏实地,2020涅槃重生
* @version 1.0
*
* @Description: 并发编程系列
*/
public class AchieveSynObjectForVolatile extends Thread {
private static volatile int volatileCount=0;
private static AtomicInteger AtomicIntegerCount = new AtomicInteger(0);
private static void addCountbyAtomicInteger() {
for (int i = 0; i < 1000; i++) {
AtomicIntegerCount.incrementAndGet();
}
System.out.println("并发编程系列监测结果-----AtomicIntegerCount: " + Atom
来源:CSDN
作者:君子志邦
链接:https://blog.csdn.net/u011488009/article/details/104050276