在读数据的时候总认为其他线程不会对数据做修改,在更新数据的时候会判断其他线程有没有更新数据,如果有更新,则重新读取,再次尝试更新,循环上述步骤直到更新成功,乐观无锁回滚重试
https://juejin.cn/post/7087436837911789576
乐观锁的典型案例就是原子类,例如 AtomicInteger 在更新数据时,就使用了乐观锁的思想,多个线程可以同时操作同一个原子变量。
CAS
原子类