CAS和JUC下的原子类关系十分密切,在本篇博客中可能需要一些原子类的知识。
1、引言
在多线程环境下,i++语句是线程不安全的。我们可以使用synchronized关键字保证线程安全,但是synchronized有一些缺陷:锁太重,影响系统的性能。
在使用原子类后,即可解决上述存在的问题,即保证原子性,又不需要加重锁。
2、CAS概述
2.1 基本概念
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b2ba55b9920554acc51eed2262dcea50.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/06d88de21efcef31428a1d413b7133d3.png)
Java中JUC下原子类的应用,底层就是CAS这种思想来保证。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d509b1c871624e5b98ddae7c29c9c7bb.png)
2.2 硬件角度
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4ab87a89dca7655604dd359044e650cf.png)
- 在硬件层面,在多线程情况下,只有一个线程能给总线加锁,也就是说这是硬件层面的加锁。
说白了就是:在开发中使用JUC中的原子