Java并发包下面提供了一系列原子操作的类,比如AtomicIntger,它是对int的一个封装,提供原子性的访问和更新操作,其原子性操作的实现是基于CAS技术。
CAS全称为Compare And Swap,实现思想为CAS(V,A,B),其中V为内存地址,A为更新前的原值,B为新值。如果内存地址V中的值与更新前的值A相同,那么将V地址中的值更新为B。否则的话,说明V中的值已经被其它线程更新,那么重新获取V中的值,重复执行上面的操作,直到更新成功。
CAS操作是由操作系统的原语提供支持,原语是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性。即原语的执行必须是连续的,在执行过程中不允许被中断。
CAS适用于竞争不太激烈的场景,如果竞争激烈的话,CAS会一直自旋不成功,耗费CPU资源。
参考文献
[1]https://www.cnblogs.com/Shuuichi/p/10590710.html