分布式锁

为什么需要分布式锁
在多线程环境中,若多个线程同时访问共享资源(如商品库存、外卖订单等),会发生数据竞争,可能会导致出现脏数据或者系统问题,影响程序的正常运行
举个例子:假设现在有100个用户参与某个限时秒杀活动,每位用户限购1件商品,且商品数量只有3个。若不对共享资源进行互斥访问,就可能出现以下情况
线程1、2、3等多个线程同时进入抢购方法,每个线程对应一个用户
线程1查询用户已经抢购的数量,发现当前用户尚未抢购且商品库存还有 1 个,因此认为可以继续执行抢购流程
线程 2 也执行查询用户已经抢购的数量,发现当前用户尚未抢购且商品库存还有 1 个,因此认为可以继续执行抢购流程
线程 1 继续执行,将库存数量减少 1 个,然后返回成功
线程 2 继续执行,将库存数量减少 1 个,然后返回成功
此时就发生了超卖问题,导致商品被多卖了一份
附件不支持打印

加载失败,