CAS-源码分析引出Unsafe类、Unsafe类详解

CASDemo演示

public class CASDemo {public static void main(String[] args) {AtomicInteger atomicInteger = new AtomicInteger(5);System.out.println(atomicInteger.compareAndSet(5, 2022) + "\t" + atomicInteger.get());//true	2022System.out.println(atomicInteger.compareAndSet(5, 2022) + "\t" + atomicInteger.get());//false	2022}
}

CAS底层原理?谈谈对Unsafe类的理解?

7.5.1 Unsafe

Unsafe类是CAS的核心类,由于Java方法无法直接访问底层系统,需要通过本地(native)方法来

访问,Unsafe相当于一个后门,基于该类可以直接操作特定内存的数据。Unsafe类存在于

sun.misc包中,其内部方法操作可以像C的指针一样直接操作内存,因此Java中CAS操作的执行依

赖于Unsafe类的方法。

注意:Unsafe类中的所有方法都是native修饰的,也就是说Unsafe类中的所有方法都直接调用操作

系统底层资源执行相应任务。

问题:我们知道i++是线程不安全的,那AtomicInteger.getAndIncrement()如何保证原子性?

AtomicInteger类主要利用CAS+volatile和native方法来保证原子操作,从而避免synchronized的高

开销,执行效率大为提升:

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/288885.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AUTOSAR CanTSyn时间同步模块配置与代码实现(一)

AUTOSAR CanTSyn模块配置与代码实现 1、CanTSyn模块配置 2、CanTSyn_RxIndication CanTSyn_Config_ptr指向配置的结构体,RxPduId只有一条报文的话,RxPduId0 下面是解析接收到的报文的各个参数。 SYNC报文的格式分为两种,一种是带CRC的&am…

vmware离线安装docker-compose

vmware离线安装docker-compose 最近安装docker-compose,发现git取拉取,不是拒绝连接就是报443错误,或者其他错误 最后发现用包直接传上去好用,不用git拉取了 离线安装docker-compose 本文章给的docker-compose离线包,…

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…

快速入门ESP32—— 解决platformIO添加开源库下载失败的问题

相关文章 快速入门ESP32——开发环境配置Arduino IDE 快速入门ESP32——开发环境配置PlatformIO IDE 快速入门ESP32—— platformIO添加开源库和自己的开发库 快速入门ESP32—— 解决platformIO添加开源库下载失败的问题 前言一、通过github链接直接下载1、下载步骤2、现象 前言…

【PostgreSQL内核学习(十八)—— 存储管理(存储管理的体系结构)】

存储管理 概述存储管理器的体系结构存储管理器的主要任务读写元组过程 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。 本文主要参考…

@德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?

德人合科技 | 天锐绿盾加密软件是一款全面保障企业电脑数据和安全使用的加密软件 PC端访问地址:www.drhchina.com 它的功能包括但不限于: 实时操作日志:可以实时详细地记录所有终端的操作日志,包括终端上窗口标题的变换、程序的…

探秘 AJAX:让网页变得更智能的异步技术(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

智能优化算法应用:基于混沌博弈算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于混沌博弈算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于混沌博弈算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.混沌博弈算法4.实验参数设定5.算法结果6.…

凯斯西储大学轴承数据解读

文章目录 一、凯斯西储大学轴承数据基础知识?1.1 故障种类1.2 故障点尺寸(单点故障)1.3 载荷和转速 二、数据解读2.1 文件2.2 以12k Drive End Bearing Fault Data为例2.3 以(0.007,inner race)为例。 3 Normal Baseli…

特斯拉推出Optimus-Gen 2人形机器人,马斯克:“Optimus机器人被严重低估了”

原创 | 文 BFT机器人 近日,特斯拉毫无征兆地在社交平台X上发布了其机器人Optimus-Gen 2(第二代)的视频。 Optimus-Gen 2是特斯拉继Bumblebee和Optimus-Gen 1之后的第三款人形机器人,根据Optimus的官方介绍,该机器人是…

【Deformable DETR】

最近学习CV中的Transformer有感而发,网上关于Deformable DETR通俗的帖子不是很多,因此想分享一下最近学习的内容。第一次发帖经验不足,文章内可能有许多错误或不恰之处欢迎批评指正。 Abstract DETR消除了目标检任务中的手工设计痕迹,但是存在收敛慢以及Transformer的自注…

强大矢量图编辑器 Boxy SVG 激活最新

Boxy SVG for Mac功能介绍 1、干净,直观的UI深受Inkscape,Sketch和Adobe illustrator的启发 2、广泛支持画布上编辑对象几何,转换,绘画和其他属性 3、保存为SVG和SVGZ格式,导出为PNG,JPG,WebP和…