Automic

Automic原子类底层并不是传统意义的锁机制,而是无锁化的CAS机制,通过CAS机制保证多线程修改数据的安全性。

原子类:AutomicInteger AutomicLong AutomicReference AutomicBoolean

为什么需要原子类?

因为像i++,这种运算其实是包含了三步,读i,i+1,赋值,并不是原子性操作。所以此处用到了CAS操作,这里不用synchronized和lock,是因为它是一个轻量级的实现。它用的是Unsafe类中的方法,其是native 方法,也就是用c++编写的,代码层面是操作系统,也就是一种系统原语,原语属于操作系统范畴,是由若干指令组成去完成某个功能的过程。并且原语的执行必须是连续的,不可中断,所以CAS是一条CPU的原子指令,不会造成所谓的数据不一致问题。

你可能感兴趣的:(java,jvm,经验分享)