什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?

提问者:帅平 问题分类:面试刷题

什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?

1 个回答
Rae
Rae 管理员

原子操作是指一个不受其他操作影响的操作任务单元。原子操作是在多线程环境下避免数据不一致必须的手段。

int++并不是一个原子操作,所以当一个线程读取它的值并加1时,另外一个线程有可能会读到之前的值,这就会引发错误。

在 java.util.concurrent.atomic包中添加原子变量类之后,这种情况才发生了改变。所有原子变量类都公开比较并设置原语(与比较并交换类似),这些原语都是使用平台上可用的最快本机结构(比较并交换、加载链接/条件存储,最坏的情况下是旋转锁)来实现的。java.util.concurrent.atomic包中提供了原子变量的 9 种风格(AtomicInteger;AtomicLong;AtomicReference;AtomicBoolean;原子整型;长型;引用;及原子标记引用和戳记引用类的数组形式,其原子地更新一对值)。

发布于:1个月前 (10-20)
我来回答