摘要:
乐观锁 每次操作时不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止悲观锁 是会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁可以使用volatile+CAS原语实现,读取内存值的方式实现了乐观锁,方法:第一,比较内存值和期望值;第二,替换内存值为要替换值。悲观锁可以使用synchronize的以及Lock。CAS是单词compare and set的缩写,意思是指在set之前先比较该值有没有变化,只有在没变的情况下才对其赋值。例如AtomicInteger的incrementAndGet的实现就用到了compareAndSet(CAS),如下代码所示 阅读全文