【JDK源码】并发原子类总结

总结

原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。

原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。

在java中提供了很多原子类

在这里插入图片描述

问题

关于原子类的问题,大概有以下这些:

(1)Unsafe是什么?

(2)Unsafe的实例怎么获取?

(3)Unsafe的CAS操作?

(4)Unsafe的阻塞/唤醒操作?

(5)Unsafe实例化一个类?

(6)实例化类的六种方式?

(7)原子操作是什么?

(8)原子操作与数据库ACID中A的关系?

(9)AtomicInteger怎么实现原子操作的?

(10)AtomicInteger主要解决了什么问题?

(11)AtomicInteger有哪些缺点?

(12)ABA是什么?

(13)ABA的解决方法?

(14)AtomicStampedReference是怎么解决ABA的?

(15)CPU的缓存架构是怎样的?

(16)CPU的缓存行是什么?

(17)伪共享是什么原因导致的?

(18)怎么避免伪共享?

(19)LongAdder的实现方式?

(20)LongAdder是怎么消除伪共享的?

(21)LongAdder与AtomicLong的性能对比?

(28)LongAdder中的cells数组是无限扩容的吗?

可以参考
【JDK源码】魔法类Unsafe
【JDK源码】并发原子类AtomicInteger
【JDK源码】并发原子类AtomicStampedReference
CPU缓存行、伪共享
【JDK源码】并发原子类LongAdder

Guess you like

Origin blog.csdn.net/qq_51998352/article/details/121280372