【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
原子类将CPU的CAS(Compare And Switch)指令封装起来,作为一项库级特性提供给应用程序开发者。但是CAS有ABA的问题。于是额外的AtomicStampedReference 被提供,用来提供带版本号的数据比较。可是CPU一次只能执行一条CAS指令,也就是说,它一次只能对一个内存地址做CAS操作,它要如何做到同时比较两个“数据”,即操作数与其版本,呢?
答案是:双字或多字CAS指令?
ANYWAY...
再有就是,有CAS的效率是由MESI提高的。如果这么说,那么volatile做什么呢?
来源:oschina
链接:https://my.oschina.net/u/109289/blog/33358