并发编程系列之七多线程原子类AtomicInteger与不能保证原子性的volatile【原子在多线程下发生争抢】

会有一股神秘感。 提交于 2020-01-20 16:35:53

 并发编程系列之七多线程原子类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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!