From 5b0337e1bd45f7f480bd134fae04ade352f625a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9F=922012?= <345849402@qq.com> Date: Sun, 20 May 2018 19:21:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A5=E8=87=AA=E7=83=AD=E5=BF=83=E7=BD=91?= =?UTF-8?q?=E5=8F=8B=E7=9A=84=E6=B5=8B=E8=AF=95=E5=92=8C=E6=80=9D=E8=80=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/itstyle/seckill/service/impl/SeckillServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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();