CAS机制以及简单实现
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机制以及简单实现相关推荐
- 对CAS机制的理解(二)
一.Java当中CAS的底层实现 首先看看AtomicInteger的源码,AtomicInteger中常用的自增方法 incrementAndGet: public final int increm ...
- 什么是CAS机制?(进阶篇)
转载自 永远爱大家的 程序员小灰 这一期我们来深入介绍之前遗留的两个问题: Java当中CAS的底层实现 CAS的ABA问题和解决方法 首先看一看AtomicInteger当中常用的自增方法 i ...
- 原子性概念及原子类的工作原理-CAS机制
1.原子性概念 原子性是指一个操作是不可中断的,要么全部执行成功,要么全部执行失败,有着"同生共死"的感觉.即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其它的线程干扰. ...
- java cas机制_java并发编程中的CAS机制,你理解嘛?
学习Java并发编程,CAS机制都是一个不得不掌握的知识点.这篇文章主要是从出现的原因再到原理进行一个解析.希望对你有所帮助. 一.为什么需要CAS机制? 为什么需要CAS机制呢?我们先从一个错误现象 ...
- CAS机制之ABA问题
这篇博客主要讲解两个问题: 1,Java当中CAS底层实现 2,CAS的ABA问题和解决办法 Java当中CAS底层实现 首先我们来看JDK1.7的AtomicInteger类的incrementAn ...
- java cas 什么意思_什么是CAS机制,通俗易懂大白话版。
原标题:什么是CAS机制,通俗易懂大白话版. 我们先看一段代码: 启动两个线程,每个线程中让静态变量count循环累加100次. 最终输出的count结果一定是200吗?因为这段代码是非线程安全的,所 ...
- CAS机制实现原理分析
学习方法:场景->需求->解决方案->应用->了解原理 一.CAS是什么? CAS机制:CompareAndSwap 或 CompareAndExchange 或 Compar ...
- Java:java学习笔记之锁机制的简单理解和使用
锁机制的简单理解和使用 锁机制 1.背景 2.定义 3.锁的种类 4.乐观锁 VS 悲观锁 4.1.悲观锁 4.2.乐观锁 4.3.举例说明 4.4.CAS算法 4.4.1.CAS使用 4.4.2.C ...
- 【Java】Java CAS机制
1.原子操作类 所谓原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类.如AtomicBoolean,AtomicInteger,Atomi ...
最新文章
- 如何衡量RFID技术在仓库中的价值?
- 如何使用机器学习进行异常检测和状态监控?
- 【视频讲解】基础实验4-2.1 树的同构 (25 分)
- 谁还没个黑历史了。。。 | 今日最佳
- java单元测试的用法及原因
- Prince和学生们侃侃而谈系列05
- Xcelsius 访问webservice 需要配置
- MySQL,Oracle,DB2,PostgreSQL上explain的用法
- 手机浏览器/H5页面实现打开微信代码 引导关注公众号
- 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
- Ubuntu查看一些版本 1
- 【初阶与进阶C++详解】第十八篇:map_set(map_set使用+multiset_multimap使用+模拟map_set)
- soso地图api接口地理解析geocoder检索示例----并在信息框显示经纬度
- 用微信小程序实现视频通话
- 开题报告中拟解决的主要问题怎么写?
- JavaScript 按字母顺序排列对象数组
- 新站如何快速提升百度索引量
- VLC可用的模块列表
- python-双向循环_关键字pass_break_continue_for循环
- CTF show萌新题系列
热门文章
- 超级实用——用word与谷歌翻译将英文PDF文档翻译成中文,免费无限制之美
- 开始协议处理句柄[http-nio-8080]_微软win10发布KB4520062更新,解决登录黑屏和开始菜单空白等问题...
- 百度网盘青春版将不限速;Win10商店上线摸鱼App;Log4j维护者:只有三个人赞助Log4j项目 | EA周报...
- 怎么找回xmind意外关机的文件_如何在意外关机后恢复文件
- 时序预测 | MATLAB实现BiLSTM时间序列未来多步预测
- 关于xftp和xshell 软件评估期已过的解决办法
- 【蓝桥杯】最长子序列
- CAD二次开发 对象
- LDPC译码原理(公式推导)及其matlab代码实现(超详细)
- 周明:NLP进步将如何改变搜索体验