Atomic原子类介绍:
Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

分类:

根据操作的数据类型,可以分为4类:

基本数据类型:

  • AtomicInteger:整型原子类
  • AtomicLong:长整型原子类
  • AtomicBoolean :布尔型原子类

数组类型

使用原子的方式更新数组里的某个元素

  • AtomicIntegerArray:整型数组原子类
  • AtomicLongArray:长整型数组原子类
  • AtomicReferenceArray :引用类型数组原子类

引用类型

  • AtomicReference:引用类型原子类
  • AtomicStampedRerence:原子更新引用类型里的字段原子类
  • AtomicMarkableReference :原子更新带有标记位的引用类型

对象的属性修改类型

  • AtomicIntegerFieldUpdater:原子更新整型字段的更新器
  • AtomicLongFieldUpdater:原子更新长整型字段的更新器
  • AtomicStampedReference :原子更新带有版本号的引用类型。该类将整数值与引用关联起来,可用于解决原子的更新数据和数据的版本号,可以解决使用 CAS 进行原子更新时可能出现的 ABA 问题

通过一个简单例子带大家看一下基本数据类型原子类的优势

①多线程环境不使用原子类保证线程安全(基本数据类型)

class Test {private volatile int count = 0;//若要线程安全执行执行count++,需要加锁public synchronized void increment() {count++; }public int getCount() {return count;}
}

②多线程环境使用原子类保证线程安全(基本数据类型)

class Test2 {private AtomicInteger count = new AtomicInteger();public void increment() {count.incrementAndGet();}//使用AtomicInteger之后,不需要加锁,也可以实现线程安全。public int getCount() {return count.get();}
}

AtomicInteger 类主要利用 CAS (compare and swap) + volatile 和 native 方法来保证原子操作,从而避免 synchronized 的高开销,执行效率大为提升。

JUC中的原子类总结相关推荐

  1. 6.juc包下的原子类AtomicInteger,AtomicLong等AtomicXXX介绍

     在介绍juc中的原子类之前,先看看官方文档对java.util.concurrent.atomic包的介绍官方文档地址这里截取翻译之后的部分描述 1. 支持对单个变量进行无锁线程安全编程 2. 类的 ...

  2. atomic原子类实现机制_JUC学习笔记--Atomic原子类

    Atomic 原子操作类包 Atomic包 主要是在多线程环境下,无锁的进行原子操作.核心操作是基于UnSafe类实现的CAS方法 CAS CAS: compareAndSwap :传入两个值:期望值 ...

  3. 并发笔记(八)JUC原子类以及线程池(Executors)

    一.原子类 JUC中提供了针对一个变量的修改的简单原子操作,提供了原子类,相对于我们自己采用锁的方式实现来说,原子类的性能更好. 1.1原子类的底层实现原理理论:volatile+(循环的CAS) C ...

  4. Atomic 原子类

    1 Atomic 原子类介绍 Atomic 翻译成中文是原子的意思.在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的.在我们这里 Atomic 是指一个操作是不可中断的.即使是 ...

  5. Java多线程进阶面试-Atomic 原子类

    1.介绍一下 Atomic 原子类 Atomic 翻译成中文是原子的意思.在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的.在我们这里 Atomic 是指一个操作是不可中断的. ...

  6. Atomic 原子类总结

    Atomic 原子类总结 Atomic 原子类介绍 基本类型原子类 基本类型原子类介绍 AtomicInteger 常见方法使用 基本数据类型原子类的优势 AtomicInteger 线程安全原理简单 ...

  7. 多线程-使用大全 基础使用 / 锁 / 线程池 / 原子类 / 并发包 / CAS / AQS (2022版)

    一.多线程描述 1.什么是cpu CPU的中文名称是中央处理器,是进行逻辑运算用的主要由运算器.控制器.寄存器三部分组成, 运算器:从字面意思看就是运算就是起着运算的作用, 控制器:就是负责发出cpu ...

  8. 【Java_多线程并发编程】JUC原子类——4种原子类

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4种,分别是: 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 2. 数组类型: Ato ...

  9. Java多线程系列--“JUC原子类”01之 框架

    2019独角兽企业重金招聘Python工程师标准>>> Java多线程系列--"JUC原子类"01之 框架 根据修改的数据类型,可以将JUC包中的原子操作类可以分 ...

  10. Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类

    概要 AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray这3个数组类型的原子类的原理和用法相似.本章以AtomicLongArray对数 ...

最新文章

  1. Nature:拟南芥微生物组功能研究2细菌基因组测序和分析
  2. 解决外部符号错误:_main,_WinMain@16,__beginthreadex
  3. 向app store提交应用时,必须点“ready to upload binary”!
  4. NetBeans Weekly News - Issue # 446 - Jul 20, 2010
  5. 【POJ - 3352】Road Construction(Tarjan,边双连通分量)
  6. vue如何配置服务器端跨域_vue项目里如何配置本地代理实现跨域请求
  7. c++字符串string操作全解
  8. OpenGL学习(八)phong光照模型
  9. “知识资源细颗粒度建设和标签标引”规则规范心得说明
  10. 【千峰网安学习】利用PE破解系统密码
  11. 小谈 《日内交易策略--谷物期货交易实战指南》中提到的策略
  12. luffy-16/订单表设计,立即付款接口/前端,支付成功get回调用户展示,支付成功post回调修改订单状态
  13. Magento2.1x常见报错处理
  14. 多元统计分析及R语言建模
  15. 保证项目如期上线,测试人能做些什么?
  16. 祛百病祖传秘法转抄的
  17. unordered_map详细介绍
  18. 【Python网络爬虫】爬虫常见加密解密算法
  19. Outlook2013/2016签名选项卡无法打开
  20. 大数据算法在诸多领域“弄潮”

热门文章

  1. 基于VUE,VUX组件开发的网易新闻页面搭建过程
  2. 《Excel 职场手册:260招菜鸟变达人》一第 37 招 用条件格式制作项目进度图
  3. jsp+servlet实现最基本的注册登陆功能
  4. php -- php模拟浏览器访问网址
  5. 通过隐藏Nginx和PHP版本号防止黑客攻击
  6. SSH中常见jar包缺少错误
  7. 项目管理九大知识体系(转)
  8. 6.Jenkins 权威指南 --- 高级构建
  9. 47. Magneto Transaction Email(1)
  10. Windows XP Embedded 官方下载地址