Java原子性操作及应用

1 原子性

原子性:一个操作,或者多个操作,要么全部执行并且执行的过程中 不会被任何因素打断,要么就 都不执行

2 原子性操作

和原子性是一个意思,不需要 synchronized。指不会被线程调度机制打断的操作,这种操作,一旦开始,就一直运行到结束,中间不会有任何 context switch
原子操作可以是一个步骤,也可以是多个操作步骤,但其 顺序不可以被打乱,也 不可以被切割而只执行其中的一部分,将 整个操作视作一个整体 是原子性的核心特征

3 Java原子性操作的理解(赋值和自增自减)
3.1 赋值操作是否是原子性 — 不是
  • 不管是基础数据类型还是引用数据类型,都不是原子操作
  • 以结果论的话,局部变量基本数据类型的赋值操作,局部引用类型的 null赋值 是原子性的
  • 在 Java中,任何赋值操作都不是原子操作。它都具有先将被赋入的值加载到栈中,然后再赋值给变量
  • 像 int a = b ; 这种方式的赋值也不是原子操作,因为它需要 先加载 b变量的值到栈中,然后再赋值给a
3.2 自增自减操作是否是原子性 — 不是
  • 只有局部变量的 int类型,且 自增自减的幅度在 -32768 ~ 32767 时,局部变量的 int类型的 自增自减操作都是通过 iinc 或 iinc_w 一条指令完成的
  • 其他数据类型一定要有压栈,运算,存回的操作
    参考文章1参考文章2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值