咨询一个多线程查询、更新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面试题#
全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务