diff --git a/src/main/java/com/itstyle/seckill/service/impl/SeckillServiceImpl.java b/src/main/java/com/itstyle/seckill/service/impl/SeckillServiceImpl.java index a790ad1..a8e0470 100644 --- a/src/main/java/com/itstyle/seckill/service/impl/SeckillServiceImpl.java +++ b/src/main/java/com/itstyle/seckill/service/impl/SeckillServiceImpl.java @@ -86,6 +86,7 @@ public class SeckillServiceImpl implements ISeckillService { //这里、不清楚为啥、总是会被超卖101、难道锁不起作用、lock是同一个对象 //来自热心网友 zoain 的细心测试思考、然后自己总结了一下 //事物未提交之前,锁已经释放(事物提交是在整个方法执行完),导致另一个事物读取到了这个事物未提交的数据,也就是传说中的脏读。建议锁上移 + //给自己留个坑思考:为什么分布式锁(zk和redis)没有问题 String nativeSql = "SELECT number FROM seckill WHERE seckill_id=?"; Object object = dynamicQuery.nativeQueryObject(nativeSql, new Object[]{seckillId}); Long number = ((Number) object).longValue();