一、 适用环境
1. 数据库集群模式(1主多从)
2. 单机数据库
3. 数据库必须提供行级锁功能
二、 原理:cas算法
代码
// 更新当前值为new
updateCurrentValue(id new, old);
old:通过id 查到的值
new:期望的值
id:表的主键
UPDATE user t SET t.CURRENT_VALUE=:new WHERE t.ID =:id AND t.CURRENT_VALUE=:old
三 原理解析
1. 通过id获取CURRENT_VALUE的值作为old
2. 多线程情况下,有线程A更新了CURRENT_VALUE的值,那么当前线程更新就不成功。因为t.CURRENT_VALUE和old的值不相等。因为是行级锁,更新表数据的时候,只有一个线程执行。所以可以保证可以作为分布式共享锁