来自热心网友的测试和思考

This commit is contained in:
小柒2012
2018-05-20 19:21:48 +08:00
parent 7013d14a04
commit 5b0337e1bd

View File

@@ -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();