本人目前在开发直播打赏的接口,核心业务逻辑如下:
// 增加收礼人贝壳(金额)
executeUpdateSql("UPDATE t_customer SET balance = balance + " + Moeny + " WHERE id = '" + uid + "'");
// 修改收礼人魅力等级
executeUpdateSql("UPDATE t_customer SET mei_level = mei_level + 1 WHERE id = '" + uid + "'");
// 增加房间热度
executeUpdateSql("UPDATE t_house SET hot_num="+ +" WHERE id = '" + houseId + "'");
// 扣减送礼人金币(金额)
executeUpdateSql("UPDATE t_customer SET jinbi = jinbi - " + Moeny + " WHERE id = '" + customer.getId() + "' and jinbi >= " + Moeny);
还有一些其他的业务数据保存记录操作和消息推送
问题1:在并发情况下,怎么添加最小粒度锁?,目前是在方法调用处添加 Lock lock = ReentrantLock 锁