首页 > 其他分享 >05 - Volatile伪共享问题与Volatile重排序问题

05 - Volatile伪共享问题与Volatile重排序问题

时间:2022-08-18 01:22:27浏览次数:49  
标签:count 05 ++ tempThread int Volatile 内存 排序

为什么Volatile不能保证原子性

public class VolatileAtomThread extends Thread {

    private static volatile int count;

    public static void main(String[] args) {
        ArrayList<Thread> threads = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Thread tempThread = new Thread(() -> {
                for (int j = 0; j < 1000; j++) {
                    count++;
                }
            });
            threads.add(tempThread);
            tempThread.start();
        }
        threads.forEach(thread -> {
            try {
                thread.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        System.out.println(count);
    }
}

Volatile为了能够保证数据的可见性,但是不能够保证原子性,及时的将工作内存的数据刷新主内存中,导致其他的工作内存的数据变为无效状态,其他工作内存做的count++操作等于就是无效丢失了,这是为什么我们加上Volatile count结果在小于10000以内。

标签:count,05,++,tempThread,int,Volatile,内存,排序
From: https://www.cnblogs.com/YeQuShangHun/p/16597370.html

相关文章

  • CF805(div3)E. Split Into Two Sets
    Problem-1702E-Codeforces思路:这道题自己没磕出来思路,大体上就是,先将节点相互连接起来,{1,2}{2,1},{3,4}{4,3}当形成的环是偶数的时候,既可以间隔选择形成二分图,若能形......
  • 1005 迷宫2 思维 消耗最少防止通行 障碍物形成最短路
    链接:https://ac.nowcoder.com/acm/contest/26077/1005来源:牛客网题目描述这是一个关于二维格子状迷宫的题目。迷宫的大小为N*M,左上角格子座标为......
  • 拓扑排序
    拓扑排序2022.8.16背景今天是LAF的生日,在被他的生日赛虐的时候,发现拓扑排序忘得差不多了,赶紧总结一下……问题设你有n个任务需要完成,一次只能完成一个任务,完成这些任......
  • day22--Java集合05
    Java集合0511.HashSet课堂练习11.1课堂练习1定义一个Employee类,该类包括:private成员属性name,age要求:创建3个Employee对象放入HashSet中当name和age的值相同时,认为是......
  • 字符串大小写规则排序
    输入BadbAbB,输出AaBBbbd。因为A的ascii码比a小,所以相等的时候,直接输出a<b。不相等的时候,如果一个是大写,一个是小写,就要转换之后再比较。 #include<iostream>#include......
  • 亮点4-搜索结果的重新排序采用了本地单页排序和服务端多页排序两种可选模式-《教育行
    《教育行业核心数据流程管理平台》的设计当中,《学生基本信息》管理模块是一个最基本的模块,也是一个十分重要的平台组成部分。它的设计好坏,直接关系到业务管理人员的工作效......
  • Python快速排序
    defquicksort(array):less=[]greater=[]iflen(array)<=1:returnarraypivot=array.pop()forxinarray:ifx<=p......
  • 7-12 排序
    给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个......
  • 04 - volatile 原理分析
    什么是Volatile能够保证线程可见性,当一个线程修改主内存中共享变量时,能够保证对另外一个线程可见性,但是注意他不能够保证共享变量的原子性问题。Volatile的特性可见......
  • 经典排序之堆排序
    堆排序思路堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分......