zoukankan      html  css  js  c++  java
  • 并发编程(二)__原子变量

    原子变量:

        在 java.util.concurrent.atomic 包下提供了一些原子变量。 


         1. volatile 保证内存可见性
         2. CAS(Compare-And-Swap) 算法保证数据变量的原子性
         CAS 算法是硬件对于并发操作的支持
         CAS 包含了三个操作数:
         ①内存值 V
         ②预估值 A
         ③更新值 B
         当且仅当 V == A 时, V = B; 否则,不会执行任何操作。

    个人理解

        每个线程的操作 分为两步,先读取内存值,再进行比较和替换,只有比较之后相等,才进行替换
        因此当多个线程进行访问时,只有一个线程会成功改写
        当多个线程对主程序中的数据进行修改时,有且只有一个线程会成功,效率比原来的锁高,
        当这一次运算不成功的时候,下一次不会阻塞,不会放弃cpu给他的执行权,
        他紧接着会再去尝试,再去更新
        所以CAS算法,要比普通的同步锁的效率要高
        缺点:是自己写的算法比较多,比如一旦失败了, 我们要怎么做,通常用循环,
        一旦失败了再来,失败了再来,什么时候成功,什么时候为止。

    纸上学来终觉浅,觉知此事需躬行
  • 相关阅读:
    SVG平移和缩放(鼠标滚轮)的实现
    CSS之容器水平垂直居中
    CSS之flex布局
    CSS之鼠标悬停——内容变深/变浅
    CSS之clip-path绘制多边形
    axios
    .Net 反射
    Redis
    .Net Core GRPC报错
    Python 京东云无线宝消息推送
  • 原文地址:https://www.cnblogs.com/dreamHighMjc/p/8497080.html
Copyright © 2011-2022 走看看