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 我该如何实现鼠标按下GUI按钮时就执行按钮里面的操作的方法
      • ¥15 关于#硬件工程#的问题:我这边有个锁相环电路没有效果
      • ¥15 20款 27寸imac苹果一体机装win10后,蓝牙耳机和音响放歌曲卡顿断断续续.
      • ¥15 求解icon library .icl图标库文件
      • ¥15 VB.NET 父窗体调取子窗体报错
      • ¥15 python海龟作图如何改代码使其最后画出来的是一个镜像翻转的图形
      • ¥15 我不明白为什么c#微软的官方api浏览器为什么不支持函数说明的检索,有支持检索函数说明的工具吗?
      • ¥15 在我想检测ros是否成功安装时输入roscore出现以下
      • ¥30 老板让我做一个公司的投屏,实时显示日期,时间,安全生产的持续天数,完全没头绪啊
      • ¥15 Google Chrome 所有页面崩溃,三种解决方案都没有解决,我崩溃了