分布式锁学习
早睡蛋 10/2/2022 分布式锁
# 未使用锁出现的超卖现象
定义实体类
@Data
@TableName("db_stock")
public class Stock {
private Integer stock = 5000;
}
1
2
3
4
5
6
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
2
3
4
5
6
7
8
9
10
未加锁的情况下,单机运行是没有问题的,不过在压力测试下会出现超卖现象。
这里所谓的超卖,指的是在压力测试下,5000条请求同时发生,并且全都发送成功,但是打印出来的剩余量并没有变为0,出现了并发下的问题。