在通过cas实现的AtomicInteger类的源代码中,共享的成员变量就有volatile修饰
cas特点
结合cas和volatile可以实现无锁并发,,适用于线程少,多核cpu的场景下。
* cas是基于乐观锁的思想:最乐观的估计,不怕别的线程来修改共享变量。
* synchronized是基于悲观锁的思想:最悲观的估计,得防着其他线程来修改共享变量,我们上了锁你们都别想改,我们改完了解开锁,你们才有机会。
* cas体现的是无锁并发,无阻塞并发。
* 因为没有使用synchronized,所以线程不会陷入阻塞,这是效率提升的因素之一。
* 但如果竞争激烈,可以想到重试必然频繁发生,反而效率会受影响。