当前位置:   article > 正文

Java原子操作与原子类_java原子类加版本号

java原子类加版本号

1. 概述

  • JVM中的CAS操作,Compare And Swap,它依靠处理器的CMPXCHG指令实现原子操作
  • 执行CMPXCHG指令,需要三个操作数:内存地址 V、旧的预期值 A 和新值 B。
  • 执行操作时,只有当内存 地址V中 的值等于 A,才将内存地址 V中 的值更新为 B。

1.1 什么是原子操作

  • 原子操作的书面定义:不可中断的一个或一系列操作
  • 这样的定义是晦涩难懂的,可以结合银行转账的例子来说明
    • lucy向Bob转账100元,预期的操作步骤:lucy的账户减少100元,Bob的账户增加100元
    • 银行系统不是很智能,lucy的账户减少100元后,由于某些问题系统服务崩溃
    • 即使系统恢复了,既没有将Bob的账户增加100元,完成转账操作;也没有恢复lucy账户,告知转账失败
  • 可以说,银行转账的过程应该是一个整体,其顺序不能被打乱,也不能被突然中止;要么都执行成功,要么都执行失败或者不执行
  • 因此,原子操作可以这样理解:
    • 计算机系统中一个流程,可能是一个步骤,也可能是多个步骤
    • 流程的执行顺序不可以打乱,也不可以被切割而只执行其中的一部分
    • 应该将整个流程视为不可以改变、分割的整体,就像一个原子一样

1.2 原子操作的重要性

  • 需求
    • 地铁一共有5个闸机口,设计一个程序统计总的进站人数
    • 为了方便模拟进站计数,假设每个闸机口固定为1万人
  • 有人会说,这样一规定直接可以口算啊。
  • 有时候吧,人和机器就是有差别的,让机器实现计数功能,都不一定能准确呢
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/574671
推荐阅读
相关标签