咨询一个多线程查询、更新mysql问题

有两张表,t1是机器信息表,机器名唯一,字段是:id,机器名称name,正在执行的任务数tasks;t2是任务记录表:id,机器名称name,任务状态。

接口1:每次调用此需要生成一个任务,原则是:从t1表中选择当前任务数最小的一个机器,在t2表中插入任务记录,状态是执行中,更新t1表中此机器的任务数+1。
接口2:任务执行完成后会调用此接口,将t2表中任务记录状态改成完成,并将t1表中对应的机器的正在执行任务数-1。

对于这两个接口,service层怎么实现好一点,特别是多线程情况下,同时调用接口1和接口2时,是不是得锁整张表t1啊,不然接口2里面需要更改t1中某个机器的任务数,那么对于接口1来说,在接口2执行前后获取到的数据可能就不一样,所以是否应该锁表,感觉想把锁粒度控制在行锁级别不太可行啊。
#mysql##java##多线程##面试##mysql锁##mysql面试题#
全部评论

相关推荐

代码飞升AL:同学院本 你这都是无效实习和跳槽 下一段底线是去一个稍微知名的公司 本质是骑驴找马 你这一直骑驴换来换去没什么区别
双非有机会进大厂吗
点赞 评论 收藏
分享
夏目LTH:这个真的很看运气,多投吧。我从去年十二月底一直投到现在,之前没一个offer,结果两周前投的一家面试官聊的特别好,直接速通offer还给的SP待遇开的比我期望都够。
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务