锁在应用开发中使用非常广泛,哪些场景需要使用锁呢?
我们先来看抢购优惠卷的场景,代码如下:
public void rushToPurchase() throws InterruptedException {
//获取优惠券数量
Integer num = (Integer) redisTemplate.opsForValue().get(“num”);
//判断是否抢完
if (null == num || num
throw new RuntimeException(“优惠券已抢完");
}
//优惠券数量减一,说明抢到了优惠券
num = num - 1;
//重新设置优惠券的数量
redisTemplate.opsForValue().set("num", num);
}
流程图如下: