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 谁知道这个咋搞的吗,有偿
    • ¥20 基于spring boot、的scorm
    • ¥15 往复密封问题的两个问题
    • ¥15 DAC函数和STM32
    • ¥15 任务是接收数据并把数据写入DAC7311,这些代码能实现此功能吗
    • ¥15 分析FP -Growth代码运行内存太大而无法运行的原因
    • ¥20 qtcreat 使用msvc编译器开发软件运行时字体锯齿感严重
    • ¥15 为何显示keyerror fruit
    • ¥15 imageware粗糙度表面
    • ¥15 为什么我的uibot导入py模块出错呀。py文件放在了uibot里对应的python文件夹了,卸了重安也不行