CAS和JUC下的原子类关系十分密切,在本篇博客中可能需要一些原子类的知识。
1、引言
在多线程环境下,i++语句是线程不安全的。我们可以使用synchronized关键字保证线程安全,但是synchronized有一些缺陷:锁太重,影响系统的性能。
在使用原子类后,即可解决上述存在的问题,即保证原子性,又不需要加重锁。
2、CAS概述
2.1 基本概念
Java中JUC下原子类的应用,底层就是CAS这种思想来保证。
2.2 硬件角度
- 在硬件层面,在多线程情况下,只有一个线程能给总线加锁,也就是说这是硬件层面的加锁。
说白了就是:在开发中使用JUC中的原子类,原子类是由CAS保证,Unsafe类实现了CAS思想。C