springboot 里面增删改查怎么用多线程写,持久层是mybatis
springboot 里面增删改查怎么用多线程写,持久层是mybatis
多线程继承的Runnable写的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
springboot 里面增删改查怎么用多线程写,持久层是mybatis
多线程继承的Runnable写的
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(15)
楼上说的是对的,FutureTask非常合适题主的需求。多线程实现并不难,难的是多线程之间进行协调,线程的调度、内存分配、线程间的协作、数据共享。如果这实现这些功能一个任务调度系统是有必要的,FutureTask这个jar包非常适合。
当主线程由main入口出发,所有的实例对象都在当前线程里。而如果在当前线程打开一个Task时后台是开了一个新的线程,这时可以将需要的任务(sql)参数传入新的线程。
线程的特点是在创建启动时不会阻塞当前线程,所以当前线程可以继续开对应的多个线程来处理插入操作。这样可以将你的硬件性能尽可能的压榨。开线程的数量则可和你的硬件结合。
当然你的主线程由于没有阻塞,在执行完成创建你多个线程只是发出创建指令而不会等线程执行完成就执行过去,这时可能为防止调用线程结束(主线程)导致多个子线程没执行完成而被强行结束,这时通常需要对主线程作一个while(ture)无限循环!
insert into table sleect * from table 批量插入
根据表的字段多少,内容大小来判断批量执行多少条一次提交事务 不然也会慢
用@Async自然就是多线程的,不用自己写
我试下,没用过
spring batch.
做了分批,不分批可能得慢10倍
分批一批一批数据批量插入,不要一条一条插入。这样性能好很多的。
问题是有什么意义呢?
Completablefuture做多线程并行,也可以用线程池实现如果你不需要返回插入的结果的话
批量插入或者单条插入和并行并不冲突,可以都有也可以只有一个
FutureTask
确认一下数据库类型、版本,批量插入开关。你插入数据集数据多少?服务器到数据库带宽多少?确认瓶颈真的在插入数据库而不是别的地方吗?
回复
@魔力猫 : 不走网络,就在插入这里耗时10秒
正常情况下你表格有多少数据要导入啊,怎么会要10秒,是不是数据库设计的不合理,看看是不是索引比较多。
excel上传插入太慢了,差不多10秒,所以想试试多线程插入会不会好点