SteveCode. 2022-06-14 22:18
浏览 26
已结题

Java线程之原子类-Atomic

"我的NVIDIA开发者之旅” | 征文活动进行中.......

img

首先说一下在Java中什么是原子类

  • 我门把 高中化学中的原子类分开。在Java中原子操作是:不可以分割的 要么成功要不成功。

    线程中的锁和原子类有什么区别呢

  • 怎么说呢!他们都可以保证线程安全操作。区别在于锁的粒度。例如Lock锁,锁的都是代码块,或者方法。synchronized 可以锁代码块、类、方法。而原子类锁的粒度更细,它可以锁一个变量。锁数组、锁对象。

    原子类在Java中的包路径

    java.util.concurrent.atomic

    你说可以锁变量,那有那些呢?

    AtomicBoolean
    AtomicInteger
    AtomicLong
    

    锁数组

AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray

对非线程安全的变量,升级为原子安全类

AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicReferenceFieldUpdater

其实还有增加原子类

DoubleAdder
LongAdder

怎么说呢!我们比较常用的也没几个:今天我们就先介绍一下AtomicInteger

方法名方法说明
get()获取当前变量值
set(int newValue)设置为给定值
getAndSet(int newValue)以原子方式设置为给定值并返回旧值
compareAndSet(int expect, int update)如果当前值==预期值,则自动将值设置为给定的更新值
getAndIncrement()以原子方式将当前值加一。
getAndDecrement()以原子方式将当前值减一
incrementAndGet()以原子方式将当前值加一
decrementAndGet()以原子方式将当前值减一

"我的NVIDIA开发者之旅” | 征文活动进行中.......

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月22日
    • 创建了问题 6月14日

    悬赏问题

    • ¥15 用windows做服务的同志有吗
    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 一直显示正在等待HID—ISP
    • ¥15 Python turtle 画图