синхронизированная заблокированная версия.
@Override
public synchronized void orderProductMockDiffUser(String productId)
{
//1.查询该商品库存,为0则活动结束。
int stockNum = stock.get(productId);
if(stockNum == 0) {
throw new SellException(100,"活动结束");
}else {
//2.下单(模拟不同用户openid不同)
orders.put(KeyUtil.genUniqueKey(),productId);
//3.减库存
stockNum =stockNum-1;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
stock.put(productId,stockNum);
}
}
- Тест давления, результат все еще правильный, но скорость, как правило, не медленнее, чем без блокировки.