面试官:Java多线程怎么做事务控制?一半人答不上来

公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。有些情况写不支持,批量update,但支持insert 多条数据,这个时候可尝试将需要更新的数据拼接成多条select 语句,然后使用union 连接起来,再使用update 关联这个数据进行update,具体代码演示如下:这种方式在Mysql 数据库没有配置 allowMultiQueries=true 也可以实现批量更新。

Java多线程批量操作,居然有人不做事务控制?

公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。由于多线程提交时,每个线程事务时单独的,无法保证一致性,我们尝试给多线程添加事务控制,来保证每个线程都是在插入数据完成后在提交事务,这里我们使用两个 CountDownLatch 来控制主线程与子线程事务提交,并设置了超时时间为 30 秒。

面试官:Java 多线程怎么做事务控制?一半人答不上来?

项目代码基于:MySql 数据,开发框架为:SpringBoot、Mybatis开发语言为:Java8前言公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。于是只能写个for循环操作,但操作耗时太长,只能一步一步寻找其他解决方案。

网站地图