首页 > 编程语言 > 详细

并发回调通知时候程序错误处理-java程序中锁的使用错误

时间:2019-12-23 15:23:36      阅读:81      评论:0      收藏:0      [点我收藏+]

前几天上线的需求,测出了一个非常难发现的bug...

业务背景:下游系统会通过mq并发回调通知我所测系统,当这些并发回调请求同时来了,导致数据库更新字段异常。

原因:开发使用了乐观锁,执行sql的同时其他请求进来默认不会被执行,导致出现bug,

当两个并发线程(thread1和thread2)访问同一个对象(syncThread)中的synchronized代码块时,在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块。Thread1和thread2是互斥的,因为在执行synchronized代码块时会锁定当前的对象,只有执行完该代码块才能释放该对象锁。
解决办法:开发更改了锁的使用方法,在接收到请求的同时单独启动另一个线程去执行sql。bug修复

测试:for循环本地构造参数通知回调地址。测试通过

思考:测试本地系统的同时要考虑下游传递报文的方式,如遇到并发需要考虑模拟并发场景。使测试用例覆盖更有效

并发回调通知时候程序错误处理-java程序中锁的使用错误

原文:https://www.cnblogs.com/hongweitester/p/12083796.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!