博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
乐观锁实现
阅读量:4362 次
发布时间:2019-06-07

本文共 1441 字,大约阅读时间需要 4 分钟。

mapper:

 
update happy_lock set upg=#{upg},version=version+1 where id=#{id} and version=#{version};
测试:
@Test public void happyLock() {
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(20); for(int i=0;i<10;i++){
fixedThreadPool.execute(new Runnable() {
@Override public void run() {
try{
Map
map = new HashMap<>(); map.put("id", 1); Random rand = new Random(); Map
mapTemp=nyHappyLockService.queryLock(); int randomCount=rand.nextInt(100); int upg = Integer.valueOf(mapTemp.get("upg").toString()); int version = Integer.valueOf(mapTemp.get("version").toString()); map.put("version", version); map.put("upg", (randomCount+version)); int count=nyHappyLockService.editHappyLock(map); System.out.println(Thread.currentThread()+" "+Thread.currentThread().getName()+" 执行的结果数"+count); }catch (Exception e){
e.printStackTrace(); } } }); } } 执行结果:

提交的数据 版本号大于数据库表当前版本号,更新。可以看到后面的线程版本号都低于第一个版本 只有第一个执行成功后面的 都废弃了

 

转载于:https://www.cnblogs.com/austinspark-jessylu/p/11428129.html

你可能感兴趣的文章
session和cookie的区别
查看>>
alert弹出窗口,点击确认后关闭页面
查看>>
oracle问题之数据库恢复(三)
查看>>
单点登陆(SSO)
查看>>
HR,也确实“尽职尽责”
查看>>
MaxComputer 使用客户端配置
查看>>
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>
SpringCloud+feign 基于Springboot2.0 负载均衡
查看>>
【BZOJ5094】硬盘检测 概率
查看>>
大庆金桥帆软报表案例
查看>>
Proxy模式
查看>>
读书多些会怎样
查看>>
浏览器好用的技术
查看>>
HDU 2188------巴什博弈
查看>>
tp5任务队列使用supervisor常驻进程
查看>>
Xmind?
查看>>
spring+quartz 实现定时任务三
查看>>
day2-三级菜单
查看>>