CAS:

CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换
CAS的三个基本参数:
内存值,预估值与更新值
具体流程为:

线程2在读取变量i时,读取的预估值为0,但是此时线程1把i改成了1,主内存的i值为1.所以内存值与预估值不一样,需要重新读取在进行操作。
当内存值与预估值不一样的时候,就会取消操作,重新读取,确保变量一致
下面我们简单用代码实现一下CAS:

package com.jym.thread;import java.util.Random;/*** @program: thread* @description: CAS学习* @author: jym* @create: 2020/01/28*/
public class JymCASTest {public static void main(String[] args) {final JymCAS jymCAS = new JymCAS();for (int i =0;i<10;i++){new Thread(new Runnable() {public void run() {//获取内存值int expectValue = jymCAS.getValue();System.out.println(expectValue);boolean flag = jymCAS.compilerAndSet(expectValue, new Random().nextInt(100));System.out.println(flag);}}).start();}}
}class JymCAS {private int value;public int getValue() {return value;}public synchronized int compilerAndSwap(int expectValue ,int newValue){int oldValue = this.value;// 内存值与预期值一样,进行赋值操作if(oldValue==expectValue){this.value = newValue;}return oldValue;}// 当预期值与内存值相等,说明赋值成功了public boolean compilerAndSet(int expectValue ,int newValue){return expectValue==compilerAndSwap(expectValue,newValue);}
}

学习年限不足,知识过浅,说的不对请见谅。

世界上有10种人,一种是懂二进制的,一种是不懂二进制的。

CAS机制以及简单实现相关推荐

  1. 对CAS机制的理解(二)

    一.Java当中CAS的底层实现 首先看看AtomicInteger的源码,AtomicInteger中常用的自增方法 incrementAndGet: public final int increm ...

  2. 什么是CAS机制?(进阶篇)

    转载自  永远爱大家的   程序员小灰 这一期我们来深入介绍之前遗留的两个问题: Java当中CAS的底层实现 CAS的ABA问题和解决方法 首先看一看AtomicInteger当中常用的自增方法 i ...

  3. 原子性概念及原子类的工作原理-CAS机制

    1.原子性概念 原子性是指一个操作是不可中断的,要么全部执行成功,要么全部执行失败,有着"同生共死"的感觉.即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其它的线程干扰. ...

  4. java cas机制_java并发编程中的CAS机制,你理解嘛?

    学习Java并发编程,CAS机制都是一个不得不掌握的知识点.这篇文章主要是从出现的原因再到原理进行一个解析.希望对你有所帮助. 一.为什么需要CAS机制? 为什么需要CAS机制呢?我们先从一个错误现象 ...

  5. CAS机制之ABA问题

    这篇博客主要讲解两个问题: 1,Java当中CAS底层实现 2,CAS的ABA问题和解决办法 Java当中CAS底层实现 首先我们来看JDK1.7的AtomicInteger类的incrementAn ...

  6. java cas 什么意思_什么是CAS机制,通俗易懂大白话版。

    原标题:什么是CAS机制,通俗易懂大白话版. 我们先看一段代码: 启动两个线程,每个线程中让静态变量count循环累加100次. 最终输出的count结果一定是200吗?因为这段代码是非线程安全的,所 ...

  7. CAS机制实现原理分析

    学习方法:场景->需求->解决方案->应用->了解原理 一.CAS是什么? CAS机制:CompareAndSwap 或 CompareAndExchange 或 Compar ...

  8. Java:java学习笔记之锁机制的简单理解和使用

    锁机制的简单理解和使用 锁机制 1.背景 2.定义 3.锁的种类 4.乐观锁 VS 悲观锁 4.1.悲观锁 4.2.乐观锁 4.3.举例说明 4.4.CAS算法 4.4.1.CAS使用 4.4.2.C ...

  9. 【Java】Java CAS机制

    1.原子操作类 所谓原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类.如AtomicBoolean,AtomicInteger,Atomi ...

最新文章

  1. 如何衡量RFID技术在仓库中的价值?
  2. 如何使用机器学习进行异常检测和状态监控?
  3. 【视频讲解】基础实验4-2.1 树的同构 (25 分)
  4. 谁还没个黑历史了。。。 | 今日最佳
  5. java单元测试的用法及原因
  6. Prince和学生们侃侃而谈系列05
  7. Xcelsius 访问webservice 需要配置
  8. MySQL,Oracle,DB2,PostgreSQL上explain的用法
  9. 手机浏览器/H5页面实现打开微信代码 引导关注公众号
  10. 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
  11. Ubuntu查看一些版本 1
  12. 【初阶与进阶C++详解】第十八篇:map_set(map_set使用+multiset_multimap使用+模拟map_set)
  13. soso地图api接口地理解析geocoder检索示例----并在信息框显示经纬度
  14. 用微信小程序实现视频通话
  15. 开题报告中拟解决的主要问题怎么写?
  16. JavaScript 按字母顺序排列对象数组
  17. 新站如何快速提升百度索引量
  18. VLC可用的模块列表
  19. python-双向循环_关键字pass_break_continue_for循环
  20. CTF show萌新题系列

热门文章

  1. 超级实用——用word与谷歌翻译将英文PDF文档翻译成中文,免费无限制之美
  2. 开始协议处理句柄[http-nio-8080]_微软win10发布KB4520062更新,解决登录黑屏和开始菜单空白等问题...
  3. 百度网盘青春版将不限速;Win10商店上线摸鱼App;Log4j维护者:只有三个人赞助Log4j项目 | EA周报...
  4. 怎么找回xmind意外关机的文件_如何在意外关机后恢复文件
  5. 时序预测 | MATLAB实现BiLSTM时间序列未来多步预测
  6. 关于xftp和xshell 软件评估期已过的解决办法
  7. 【蓝桥杯】最长子序列
  8. CAD二次开发 对象
  9. LDPC译码原理(公式推导)及其matlab代码实现(超详细)
  10. 周明:NLP进步将如何改变搜索体验