码迷,mamicode.com
首页 > 编程语言 > 详细

集群中多线程如何处理表中的数据的问题

时间:2016-10-12 23:28:14      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:java db

1)场景:

 网站向消息平台发送消息,消息平台将其保单到数据库中;

 后台有多台服务器进行集群,这种情况下就会出现多线程同时获取到同一条消息进行处理的问题?如何解决:


2)具体方案,如下的sql即可解决。

   //定义一张qtz_locks表,用来做控制锁使用。

   //for update:代表给你查询出的记录添加锁

   //nowait: 代表如果获取不到数据不等待直接抛出异常退出

   select * from qrtz_locks_ex where lock_name=‘CALENDAR_ACCESS‘ and group_name=‘EPCISNBA‘for update nowait;

   select * from proddata.marketproduct_info mi where mi.marketproduct_code=‘MP02000138‘and mi.status=‘1‘;

    

   1)在你处理的代码中首先执行第一条sql,获取控制锁;然后再执行你的查询,进行状态的修改,处理完成后在释放控制锁;

   2)这样,在你进行操作前,都必须获取控制锁,才能继续操作,否则就中断,抛出异常。这样就可以做到同一条件记录只能被一条线程所操作。

   


集群中多线程如何处理表中的数据的问题

标签:java db

原文地址:http://6817977.blog.51cto.com/6807977/1861170

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!