概述
在并发场景下通常会有多个线程访问某个共享资源,此时我们能够立马想到的解决方法是给某个方法加上synchronized关键字,这样就能够保证同一时刻只有一个线程访问这个共享变量。但是synchronized属于独占锁,而独占锁是一种悲观锁,会导致其它正在尝试访问同步资源的线程挂起,等待持有锁的线程释放锁,在并发量很大的情况下性能表现很差。而另一个更加有效的锁就是乐观锁。所谓乐观锁就是,每次访问共享资源时不加锁而是假设没有冲突而去完成某项操作,只会在最后修改共享资源时判断一下有没有其它线程修改过这个共享资源,如果有修改的话就重新尝试,直到成功为止。本文要介绍的CAS就是一种乐观锁实现方式。