四、架构篇分布式-高并发2.1.2 - 线程安全性-原子性:Atomic包(CAS)

原子性

原子性(Atomicity):一个操作是不可中断的,要么全部执行成功要么全部执行失败。

在典型的转账场景中,入账和出账操作要么同时成功,要么同时失败。其操作过程是一个整体不可分割,这种操作就是原子性的操作。

int a = 1;//1
a++;//2
int b = a;//3

通过上面的伪代码来解释下什么是原子性操作。首先java内存模型中定义了8种操作都是原子的,不可再分的(java内存模型-内存间的八种同步操作)。而八种操作执行期间可能会被插入其他操作。所以八种操作的组合并不是原子性的。

第一行,是将1赋值给线程工作内存的变量a。执行了assign操作,该操作是原子性的不可在分的。

第二行,实际执行的是 读取变量a,执行了use。cpu执行加1操作,将cpu运算完成的值写回变量a,执行了assign操作。时间上是三个操作,由于执行了3条指令所以并不是原子性的。

第三行,实际执行的是 读取变量a,赋值给变量b。由于执行了2条指令所以该操作也不是原子性的。

注:可以通过 synchronized和Lock实现原子性。因为synchronized和Lock能够保证任一时刻只有一个线程访问该代码块。在无其他线程干扰的情况下单线程的原子性JMM是可以保证的。

Java提供的核心类是Atomic包中的类.

 

java.util.concurrent.atomic.*

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
datax-web-2.1.2是一个版本为2.1.2的DataX Web工具。要安装datax-web-2.1.2,您可以按照以下步骤进行操作: 1. 下载datax-web-2.1.2.tar.gz压缩,并将其放置在服务器上。 2. 解压缩datax-web-2.1.2.tar.gz文件,可以使用命令:tar -zxvf datax-web-2.1.2.tar.gz。 3. 进入解压后的目录,并执行安装脚本。如果您想使用交互模式安装,可以运行./bin/install.sh命令,并按照提示填写MySQL信息。如果您不想使用交互模式,可以运行./bin/install.sh --force命令跳过确认过程。 4. 修改控制器datax-admin的配置文件,即./datax-web-2.1.2/modules/datax-admin/conf/application.yml文件。 5. 修改执行器datax-executor的配置文件,即./datax-web-2.1.2/modules/datax-executor/conf/application.yml文件。 6. 如果您的数据库还没有创建和授权,您可以按照以下步骤进行操作: - 使用MySQL 8.0及以上版本创建数据库:create database `datax-web` character set utf8mb4; - 创建用户并授权:CREATE USER 'datax'@'%' IDENTIFIED BY '111111'; grant all privileges on *.* to datax@'%' with grant option; - 修改用户密码:ALTER USER 'datax'@'%' IDENTIFIED WITH mysql_native_password BY '111111'; 7. 启动datax-web,进入./datax-web-2.1.2/bin目录,并执行./start-all.sh命令,即可同时启动控制器和执行器。如果您想单独启动,可以使用命令./start.sh -m datax-admin或./start.sh -m datax-executor。 请注意,以上步骤仅适用于datax-web-2.1.2版本。如果您使用的是其他版本,请参考相应的安装文档。 #### 引用[.reference_title] - *1* *2* *3* [datax与datax-web安装部署](https://blog.csdn.net/m0_71142057/article/details/124898812)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值