实践悲观锁。
业务模型是User访问target,target的点击数量+1
一般流程是 读——count+1——写
如果在并发下,存在count计数失误的情况,可以以如下方法验证:
为了模拟放大并发的现象,在读与写之间➕ sleep
读-sleep(6000) —— count++ ——写
public PageResult detail(Integer userId, Integer id) {
EquityMoney equityMoney = equityMoneyDao.findById(id);
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
equityMoney.setReading_quantity(equityMoney.getReading_quantity()+1);
equityMoneyDao.save(equityMoney);
return PageResult.genSuccess(equityMoney);
}
@Query("SELECT cd from EquityMoney cd where cd.id=:id ")
EquityMoney findById(@Param("id")Integer id);
测试配置1:
准备一台服务器A
准备浏览器两个标签,同时访问A
访问时两边