Java源码阅读之:AtomicInteger
AtomicInteger源码分析 Top:带着问题看源码 在这周之前对原子类毫无了解,前面看了Unsafe类,对CAS操作有了一点了解。所以看AtomicInteger时的问题很简单,弄清楚它是什么类,有什么作用。 参考: 彤哥读源码 https://mp.weixin.qq.com/s/DdwSC5bYgFCWwnb0jxkspg 一:简介 AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。 原子操作 原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。 我们这里说的原子操作与数据库ACID中的原子性,彤哥认为,数据库中的原子性主要运用在事务中,一个事务之内的所有更新操作要么都成功,要么都失败,事务是有回滚机制的,而这里说的原子操作是没有回滚的,这是最大的区别。 二:源码解析 总的来说,源码还是很简单的,很容易理解。提供原子操作主要是利用Unsafe类中的CAS方法。 属性 // 获取Unsafe实例 private static final Unsafe unsafe =