悲观锁
SQL 最后加入 for update 语句
乐观锁
利用数据库 字段 version 控制
update ** set version =version+1 where version =#{version}
时间戳限制重入的乐观锁
先将事务设置读写提交
long start=System.currentTimeMillis();
while(true){
long end=System.currenTimeMillis();
if(end-start>100){//100 ms
return false;
}
...
int result=操作数据库;
if(result==0){
continue;
}
...
return true;
}
使用限定次数重入的乐观锁
注:不论是时间戳还是限定次数,只是为了减低失败的次数