乐观锁
是一种乐观思想
,假定当前环境是读多写少,遇到并发写的概率比较低,读数
据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前 与期望
值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。
Java中的
乐观锁
:
CAS
,比较并替换,比较当前值(主内存中的值),与预期值(当前
线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操
作。
如上图所示,可以同时进行读操作,读的时候其他线程不能进行写操作