Untitled

乐观锁:

每次读数据时认为不会被第三方修改,所以无需加锁;写数据时要判断在此期间是否有第三方修改数据。

乐观锁适用于多读的应用类型,数据库技术中常用版本号控制。乐观锁在 Java 中通过无锁实现,最常用的是 CAS 算法,Java 原子类中递增操作就通过 CAS 自旋实现。

乐观锁适合读多写少的场景。

悲观锁:

每次操作数据时假定第三方会修改数据,所以每次操作数据时上锁;这样别人想拿这个数据就会阻塞直到它拿到锁。