CAS缺点(七)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: CAS缺点

CAS缺点

  1. 循环时间长,开销很大

image.png

  1. 引出了ABA问题

image.png

解决ABA问题

用AtomicStampedReference解决ABA问题

@Data
@AllArgsConstructor
class Book{
    private int id;
    private String bookName;
}
/**
 * @author ygf
 * @date 2022/10/25 19:28
 */
public class AtomicstampedDemo {
    public static void main(String[] args) {
        Book javaBook = new Book(1,"javaBook");
        AtomicStampedReference<Book> stampedReference = new AtomicStampedReference<>(javaBook,1);
        System.out.println(stampedReference.getReference()+"\t"+stampedReference.getStamp());
        Book mysqlBook = new Book(2,"mysqlBook");
        boolean b ;
        b = stampedReference.compareAndSet(javaBook, mysqlBook, stampedReference.getStamp(), stampedReference.getStamp()+1);
        System.out.println(b+"\t"+stampedReference.getReference()+"\t"+stampedReference.getStamp());
        b = stampedReference.compareAndSet(mysqlBook, javaBook, stampedReference.getStamp(), stampedReference.getStamp()+1);
        System.out.println(b+"\t"+stampedReference.getReference()+"\t"+stampedReference.getStamp());
    }
}

结果:

image.png


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
Java 数据库连接 Maven
IDEA下Maven骨架(archetype)搭建
通过Maven生成骨架(通用项目目录结构)流程记录
1547 1
|
Linux iOS开发 MacOS
CrossOver23中文永久免费版MacOS平台快速运行Windows软件
CrossOver是一款可以让Mac和Linux系统中正常运行Windows软件的应用程序。它不像虚拟机一样需要安装Windows系统之后才可以安装Windows的应用程序,这一方式给大多数用户带来了方便。通过CrossOver实现跨平台的文件复制粘贴,使Mac/Linux系统与Windows应用良好结合。CrossOver下载:http://t.csdn.cn/Ixdq6
4283 0
CrossOver23中文永久免费版MacOS平台快速运行Windows软件
|
12月前
|
Java
常用工具类-Objects
本文介绍了Java标准库中的Objects工具类,它提供了一系列用于操作对象的实用方法,包括判断对象是否为空、比较两个对象是否相等、比较两个对象以及判断两个数组是否深度相等。文章通过示例代码展示了Objects类中isNull、nonNull、requireNull、equals、compare和deepEquals等方法的使用,突出了Objects类在处理对象时的便利性和实用性。
常用工具类-Objects
|
JavaScript 前端开发 开发者
Web Components详解-Shadow DOM基础
Web Components详解-Shadow DOM基础
504 1
|
10月前
|
搜索推荐 数据挖掘 UED
中小企业CRM解决方案排名:性价比之选
中小企业在选择CRM系统时面临的主要痛点包括预算有限、需求多样、IT资源匮乏等。因此,他们需要寻找高性价比、功能全面、操作简便且具备灵活性和可扩展性的解决方案。本文推荐了纷享销客、Zoho CRM、Apptivo和简道云CRM等几款适合中小企业的CRM系统,这些系统不仅能满足企业的多样化需求,还能助力企业高效管理客户关系,提升销售业绩。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的电影院订票选座系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的电影院订票选座系统的详细设计和实现(源码+lw+部署文档+讲解等)
200 0
|
XML 前端开发 Java
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
400 0
|
Linux
Linux中/etc/hosts文件总是被自动修改
关闭NetworkManager服务即可。 临时关闭: service  NetworkManager stop 永久关闭: chkconfig NetworkManager off 在centos6.x系列Linux版本修改完/etc/hosts之后重启被修改,是由于NetworkManager服务,关闭后再修改hosts文件,重启就不会变回去了。
4301 0
|
NoSQL Shell Android开发
GDB在线调试Android Framework Native C/C++代码
一、准备工作 1、下载并编译Android系统源码 这里比较灵活,可以下载公司内部机型的代码,也可以下载原生AOSP的代码 环境配置参考 https://source.
3994 0
|
传感器
西门子 PCS 7 工程师站及 PDM 如何安装?
本篇我们来介绍一下西门子 PCS 7 工程师站及 PDM 如何安装。我们先来看一张图,下图显示了西门子PCS7系统中各类PC站的系统结构。在安装过程中,应该根据每个PC站的不同功能定义来选择正确的安装选项。
西门子 PCS 7 工程师站及 PDM 如何安装?