`
感觉贱贱哒
  • 浏览: 4131 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

高并发如何保证线程执行的先后顺序

 
阅读更多

log4j日志时间点                                    线程号                              操作数据库动作

2017-10-21 12:32:52,804  http-bio-8080-exec-150  select TOTAL_DAY_LIMIT null then insert 0 commit;

 

2017-10-21 12:32:52,842  http-bio-8080-exec-152  select TOTAL_DAY_LIMIT 0

 

2017-10-21 12:32:53,224  http-bio-8080-exec-150  update TOTAL_DAY_LIMIT+1--->TOTAL_DAY_LIMIT='1' commit;

 

2017-10-21 12:32:53,325 http-bio-8080-exec-153  select TOTAL_DAY_LIMIT 1

 

2017-10-21 12:32:53,475 http-bio-8080-exec-152  update TOTAL_DAY_LIMIT+1--->TOTAL_DAY_LIMIT='2' commit;

 

2017-10-21 12:32:53,564  http-bio-8080-exec-154select TOTAL_DAY_LIMIT 2 限额超限,拒绝交易

 

2017-10-21 12:32:53,718  http-bio-8080-exec-153  update TOTAL_DAY_LIMIT+1--->TOTAL_DAY_LIMIT='3' commit;

 

正常交易流程:客户单卡单日累计限额为2元(TOTAL_DAY_LIMIT),并发4笔交易,每笔交易1元,当客户消费第3笔时,限额超限,拒绝交易,

数据库应该记录限额为2元(TOTAL_DAY_LIMIT)

实际交易流程:客户单卡单日累计限额为2元(TOTAL_DAY_LIMIT),并发4笔交易,每笔交易1元,当客户消费第4笔时,限额超限,拒绝交易,

数据库应该记录限额为3元(TOTAL_DAY_LIMIT),原因如上。

 

 

有没有好的解决方案呢,按照正常的交易流程。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics