sharedLock和lockForUpdate需要在事务下
sharedLock方法
修改数据:当程序运行到已经sharedLock数据时,同一时刻再有别的程序也在修改sharedLock锁定的数据时,第二个程序会修改失败
查询:sharedLock锁定的数据,只有在commit后才能查到,其他都是没有数据
lockForUpdate方法
修改数据:当程序运行到已经lockForUpdate数据时,同一时刻再有别的程序也在修改lockForUpdate锁定的数据时,此时第二个程序会等第一个程序commit后再处理
查询:lockForUpdate,我感觉其实就是把你lockForUpdate数据锁定,只有commit是的时候才会结束锁定,查询不用lockForUpdate的时候查询的是原始值不受影响,用的lockForUpdate的时候只有等上一个lockForUpdate接触锁定后才会查询出结果
注:lockForUpdate 必须是两程序同时使用
数据库原始数据
发起请求:
结果: