大疆|说一下 atomic 的原理?

大疆|说一下 atomic 的原理?

atomic代表的是concurrent包下Atomic开头的类 , 如AtomicBoolean、AtomicInteger、AtomicLong等都是用原子的方式来实现指定类型的值的更新 , 它的底层通过CAS原理解决并发情况下原子性的问题 。
cas(compareand set) , 操作原理是 , cas(abc)a代表需要更新的变量 , b代表变量当前的期望值 , c代表变量更新成的值 。 当变量a=b的时候 , 变量a的值才会更新成c;如果a!=b , 那么说明变量已经被更新过 , 更新失败
当多个线程同时使用cas更新一个变量 , 只有一个线程可以更新成功 , 其他的执行失败 。 失败的线程不会被挂起 , 可以重试cas操作 , 也可以放弃操作 。
在jdk中cas是Unsafe类中的api来实现的 。
\uD83D\uDE4F如果内容对您有帮助 , 希望您能多多点赞收藏加关注 , 激励作者创作出更加优质内容 , 谢谢!\uD83D\uDE4F
【大疆|说一下 atomic 的原理?】