1,原子类介绍:
针对数据类型的操作,JDK提供的原子类来方便我们的线程安全控制。
所有的类保存在 java.util.concurrent.atomic 包中
基本数据类型 AtomicInteger
数组类型 AtomicIntegerArray
2,举个使用的例子:
解决之前的 i++ 安全性问题
如何解决?
AtomicInteger count = new AtomicInteger(0);
count.incrementAndGet();//相当于count++,区别是这里可以保证是原子操作
3,原理:
内部的原理是采用了CAS机制,大家可以通过观察源码就可以发现
那么什么是CAS机制?
CAS有人翻译为Compare And Set或Compare And Swap都是正确的。
在多线程并发执行的状态下,锁的状态改变,基本都是使用CAS原理,它有一个比较别扭的叫法“CPU硬件同步原语”,算法是基于CPU硬件的,原子性操作,不会被其他线程打断。
CAS的算法,比较当前值和期望的值是否相等,如果相等,则将当前值赋予一个新值。
再比如修改一个Boolean的类型的变量的值,我们也可以采用
private AtomicBoolean atomicBoolean = new AtomicBoolean(false);
public void lock(){
//期望是false,如果是false,则可以修改为true
atomicBoolean.compareAndSet(false, true);
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦