CAS原理与JUC原子类

一、CAS基本原理

1、Unsafe类

(1)概念及作用:增强Java语言操作底层资源的能力,里面的方法多为native修饰的方法(基于C++实现),不建议在代码中使用,不安全。

(2)底层原理:Unsafe类提供的CAS方法,直接通过native方式(通过指针直接操作内存),调用了底层的CPU指令cmpxchg(原子指令)。

(3)使用:类被final修饰,构造方法是私有的,因此不能外部实例化,只能通过反射调用。

Field theUnsafe=Unsafe.class.getDeclaredField("theUnsafe");
//private static final Unsafe theUnsafe; 

2、CAS

(1)比较并交换 CompareAndSwap

CAS(字段内存位置,预期值,新值)

取出内存位置的值,与预期值比较,若相同则设置为新值

do{
获得字段的预期值(oldValue)
计算出需要替换的新值(newValue)
}while(!CAS(内存地址,oldValue,newValue))
//注意oldValue的值在不断的更新

二、JUC原子类

(1)AtomicXXX

具体例子:

JUC并发编程DAY08-CSDN博客

(2)存在的问题:

ABA问题

1线程操作变量A,2线程修改为B,在1线程发现前又修改为A。

三、LongAdder

以空间换时间、热点分离

将value值分离成一个数组,获取最终的value时,则将数组的元素求和。

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

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

相关文章

《每天5分钟用Flask搭建一个管理系统》第1章:环境搭建与Flask入门

第1章:环境搭建与Flask入门 1.1 Python和Flask的安装 Python的下载和安装 访问Python的官方网站 python.org,下载适合您操作系统的安装包。安装时,确保勾选了"Add Python to PATH"选项。 示例代码:检查Python是否安装…

python爬虫之实现edge无头浏览器和规避检测

python爬虫之实现edge无头浏览器和规避检测 爬取百度网页源码但不打开浏览器 实现代码如下: #需求:实现edge无头浏览器和规避检测 from selenium import webdriver from time import sleep from selenium.webdriver.edge.options import Options# 实现…

通过Socket通信实现局域网下Amov无人机连接与数据传输

1.局域网下的通信 1.1 局域网 厂家提供的方式是通过Homer图数传工具(硬件)构建的amov局域网实现通信连接. 好处是通信距离足够长,支持150m;坏处是"局部",无法访问互联网. [IMAGE:…

GitHub使用教程(小白版)

看一百篇文章不如自己写一篇 第一步:注册和安装 注册GitHub账号 访问 GitHub官网。点击右上角的 "Sign up" 按钮。按照提示输入你的邮箱、创建用户名和密码,完成注册。 安装Git 访问 Git官网。下载并安装适用于你操作系统的Git。安装…

std::function和std::bind函数

std::function和std::bind是C11引入的功能强大的库组件,用于处理函数对象和函数调用的高级操作。它们极大地增强了C处理回调、函数指针和函数对象的能力。 std::function std::function是一个通用的、多态的函数封装器,可以容纳任何可调用的目标——包…

vue---基本原理

1、vue的基本原理 当创建一个vue实例的时候,vue会先遍历data中的属性,用Object.defineProperty(vue3是proxy),将属性转换为getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化…

安装不依赖于 Zookeeper 的单节点 Kafka

此篇文章介绍如何使用 Docker 安装不依赖于 Zookeeper 的单节点 Kafka。 使用 Docker 之前应该确保网络能正常访问到镜像仓库。 首先拉取 Kafka 镜像 docker pull apache/kafka:3.7.0运行容器 docker run -p 9092:9092 apache/kafka:3.7.0简单完成上面亮点,基于…

经销or直营,新老车企殊途终要同归

步入2024,汽车圈的新人、老人都逐渐活成了对方的样子。 2024年5月,先后有消息传来,阿维塔要从直营模式全部转向经销模式,蔚来新发布的子品牌“乐道”未来可能考虑合作或加盟,并单独建设门店。 而就在5月1日&#xff…

Qt开发 | Qt控件 | QTabWidget基本用法 | QListWidget应用详解 | QScrollArea应用详解

文章目录 一、QTabWidget基本用法二、QListWidget应用详解1.列表模式1.1 基本操作1.2 添加自定义item1.3 如何添加右键菜单1.4 QListWidget如何删除item 2.图标模式 三、QScrollArea应用详解 一、QTabWidget基本用法 QTabWidget 是 Qt 框架中的一个类,它提供了一个选…

DM达梦数据库数学函数整理

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

回调函数的使用详解

实际工作中&#xff0c;经常使用回调函数。用来实现触发等机制&#xff0c;也是基于一些已开发好的底层平台&#xff0c;开发上层应用的常用方法。下面对回调函数做一个详细的解释。 目录 1. 简单的回调函数实例 2. C11&#xff0c;使用function<>的写法 3. 注册函数 …

欧洲杯盛宴与火伞云融合CDN:技术革新与体育盛事的完美融合

随着科技的飞速发展&#xff0c;体育盛事也迎来了前所未有的变革。欧洲杯&#xff0c;作为世界足坛的顶级赛事&#xff0c;吸引了全球数亿球迷的目光。而在这个信息爆炸的时代&#xff0c;如何确保球迷们能够流畅、高清地观看比赛&#xff0c;成为了各大媒体和技术公司面临的重…

DW学习笔记|数学建模task2

本章主要涉及到的知识点有&#xff1a; 微分方程的解法如何用 Python 解微分方程偏微分方程及其求解方法微分方程的基本案例差分方程的求解数值计算方法元胞自动机 2.1 微分方程的理论基础 微分方程是什么&#xff1f;如果你参加过高考&#xff0c;可能在高三备考中遇到过这…

shell脚本和变量

一、shell脚本 脚本就是可以运行的代码的集合&#xff0c;脚本语言&#xff08;计算机语言&#xff09;的特点是&#xff1a;从上到下&#xff0c;按行执行。 LINUX中的shell脚本是运行在shell环境中&#xff08;/bin/bash&#xff09;&#xff0c;bash是shell的解释器。shel…

一文搞懂Linux多线程【下】

目录 &#x1f6a9;多线程代码的健壮性 &#x1f6a9;多线程控制 &#x1f6a9;线程返回值问题 &#x1f6a9;关于Linux线程库 &#x1f6a9;对Linux线程简单的封装 在观看本博客之前&#xff0c;建议大家先看一文搞懂Linux多线程【上】由于上一篇博客篇幅太长&#xff0c;为…

protobuf的了解与使用

1.ProtoBuf&#xff1a; 是一套完整的 IDL&#xff08;接口描述语言&#xff09;&#xff0c;出自Google&#xff0c;基于 C 进行的实现&#xff0c;开发人员可以根据 ProtoBuf 的语言规范生成多种编程语言&#xff08;Golang、Python、Java 等&#xff09;的接口代码 据说 Pr…

Java技术栈中的核心组件:Spring框架的魔力

Java作为一门成熟的编程语言&#xff0c;其生态系统拥有众多强大的组件和框架&#xff0c;其中Spring框架无疑是Java技术栈中最闪耀的明星之一。Spring框架为Java开发者提供了一套全面的编程和配置模型&#xff0c;极大地简化了企业级应用的开发流程。本文将探讨Spring框架的核…

python | pyg2plot,一个有趣的 数据可视化 Python 库!

本文来源公众号“python”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;pyg2plot&#xff0c;一个有趣的 Python 库&#xff01; 大家好&#xff0c;今天为大家分享一个有趣的 Python 库 - pyg2plot。 Github地址&#xff1a;h…

打破数据分析壁垒:SPSS复习必备(八)

一、假设检验-基本概念 对总体提出一假设&#xff0c;然后借助样本对该假设进行检验。 原假设 H0: 在统计学中,把需要通过样本去推断正确与否的命题,称为原假设,又称零假设.它常常是根据已有资料或经过周密考虑后确定的. 备择假设H1: 与原假设对立的假设. 显著性水平(signi…

兰州市红古区市场监管管理局调研食家巷品牌,关注细节,推动进步

近日&#xff0c;兰州市红古区市场监管管理局临平凉西北绿源电子商务有限公司进行了深入视察&#xff0c;为企业发展带来了关怀与指导。 食家巷品牌作为平凉地区特色美食的代表之一&#xff0c;一直以来凭借其纯手工工艺和独特的风味&#xff0c;在市场上占据了一席之地。领导…