分布式锁学习

10/2/2022 分布式锁

# 未使用锁出现的超卖现象

定义实体类

@Data
@TableName("db_stock")
public class Stock {
    
    private Integer stock = 5000;
}
1
2
3
4
5
6

定义Service方法

@Service
public class StockService {

    private Stock stock = new Stock();
    public void deduct() {
        stock.setStock(stock.getStock() - 1);
        System.out.println("库存剩余量:" + stock.getStock());
    }

}
1
2
3
4
5
6
7
8
9
10

未加锁的情况下,单机运行是没有问题的,不过在压力测试下会出现超卖现象。

这里所谓的超卖,指的是在压力测试下,5000条请求同时发生,并且全都发送成功,但是打印出来的剩余量并没有变为0,出现了并发下的问题。