当前位置: 首页 > article >正文

JAVA基础:AtomicInteger

目录

前言

AtomicInteger的常用方法

AtomicInteger的底层

ABA问题


前言

在多线程的环境下,一旦涉及到多个线程共享变量的加加减减操作,就会出现线程安全问题。这时候可以使用AtomicInteger 类型的变量进行加加减减

AtomicInteger的常用方法

static AtomicInteger count = new AtomicInteger(0);

count.get(); //获得变量值(不是同步的)
count.set(value);//给变量赋值(不是同步的)

count.getAndIncrement(); //等价于count++
count.incrementAndGet(); //等价于++count
count.getAndDecrement(); //等价于count--
count.decrementAndGet(); //等价于--count
count.getAndAdd(v); //等价于count += v

AtomicInteger的底层

AtomicInteger底层使用了CAS算法,所以不会出现同步问题

ABA问题

在比较时原始值与当前变量中的值相等,也不能说明这个值没有被修改过

因为有可能另一个线程将变量中的值,从A改成了B又改回成了A,这就出现了ABA问题

\ABA问题如何解决呢? 可以为数据增加一个版本号,只要改变过,版本号就+1


http://www.kler.cn/news/324810.html

相关文章:

  • 解锁高效工作的秘密武器
  • 足底筋膜炎怎么治疗才能彻底除根
  • 学习之什么是装饰器
  • 【django】django项目使用https访问+ssl证书
  • Java基于easyExcel的自定义表格格式
  • 租界服务器跑深度学习(一)服务器租用
  • vue3+AntvS2基本使用与导出excel
  • Golang | Leetcode Golang题解之第436题寻找右区间
  • 长文本溢出,中间位置显示省略号
  • 基于Node.js+Express+MySQL+VUE新闻网站管理系统的设计与实现
  • 小程序原生-地理定位功能介绍和实现
  • Service和Endpoints
  • 使用C#,MSSQL开发的钢结构加工系统
  • 如何在iPad上用Chrome实现无痕浏览
  • Acwing 快速幂
  • 力扣 简单 876.链表的中间结点
  • Leetcode面试经典150题-383.赎金信
  • 2024年【电工(高级)】考试题及电工(高级)考试内容
  • ISO 21434车辆网络安全风险评估的全面流程解析
  • 小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(3)嵌入式系统的存储体系
  • 大模型落地需要一把“梯子”
  • 酒店智能开关的组成与功能
  • 【第十四周】PyTorch深度学习实践1
  • 浅说差分算法(上)
  • excel-VBA知识点记录
  • 服务器数据恢复—SAN环境下LUN映射出错导致文件系统一致性出错的数据恢复案例
  • 物联网系统中OLED屏主流驱动方案详解
  • 每日OJ题_牛客_HJ108求最小公倍数_C++_Java
  • unixODBC编程(四)插入数据
  • 【js】Node.js的fs的使用方法