zoukankan      html  css  js  c++  java
  • 并发编程(一)__volatile关键字

    volatile 关键字:

              当多个线程进行操作共享数据时,可以保证内存中的数据可见。
                  相较于 synchronized 是一种较为轻量级的同步策略。

                               注意:
                                           1. volatile 不具备“互斥性”:
                                               互斥性:多个线程访问时,只能有一个线程可以拿到锁。
                                           2. volatile 不能保证变量的“原子性”

    原子性问题解释

          

                                  i++ 的原子性问题:i++ 的操作实际上分为三个步骤“读-改-写”
                          举例:

                                  int i = 10;
                                       i = i++; //10,结果为10


          下面是计算机底层的运算
           int temp = i;
           i = i + 1;
           i = temp;


           从以上三步可以看出,结果 i=10, 这是计算机底层的运算

          因为i++有读改写三步操作,所以volatile关键字在这里解决不了问题,volatile只是保证数据的都在主存中进行,
          当多线程进行同时访问的时候,并不保证这三步操作具有一个同步性

    纸上学来终觉浅,觉知此事需躬行
  • 相关阅读:
    [HDU6793] Tokitsukaze and Colorful Tree
    [NOI2020]命运
    [NOI2020]美食家
    模拟9
    晚测2
    模拟8
    联考4
    模拟7
    模拟6
    关于数论
  • 原文地址:https://www.cnblogs.com/dreamHighMjc/p/8497053.html
Copyright © 2011-2022 走看看