“`” Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

所以,所谓原子类说简单点就是具有原子/原子操作特征的类。

并发包 <code>java.util.concurrent</code> 的原子类都存放在<code>java.util.concurrent.atomic</code>下,如下图所示。

<img src=""http://res.mianshigee.com/upload/article/20200414/12599ecc-b0b3-4fe5-b51b-b731e65743c3.png"" style=""width: 317px;""><br>

根据操作的数据类型,可以将JUC包中的原子类分为4类

<strong>基本类型</strong>

使用原子的方式更新基本类型</p>

<ul><li>AtomicInteger:整型原子类</li><li>AtomicLong:长整型原子类</li><li>AtomicBoolean :布尔型原子类</li></ul>

<strong>数组类型</strong>

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

<ul><li>AtomicIntegerArray:整型数组原子类</li><li>AtomicLongArray:长整型数组原子类</li><li>AtomicReferenceArray :引用类型数组原子类</li></ul>

<strong>引用类型</strong>

<ul><li>AtomicReference:引用类型原子类</li><li>AtomicReferenceFieldUpdater:原子更新引用类型里的字段</li><li>AtomicMarkableReference :原子更新带有标记位的引用类型</li></ul>

<strong>对象的属性修改类型</strong>

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

<pre><code> "“`

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.