springboot 里面增删改查怎么用多线程写,持久层是mybatis
多线程继承的Runnable写的
excel上传插入太慢了,差不多10秒,所以想试试多线程插入会不会好点
FutureTask
问题是有什么意义呢?
分批一批一批数据批量插入,不要一条一条插入。这样性能好很多的。
spring batch.
根据表的字段多少,内容大小来判断批量执行多少条一次提交事务 不然也会慢
用@Async自然就是多线程的,不用自己写
insert into table sleect * from table 批量插入
楼上说的是对的,FutureTask非常合适题主的需求。多线程实现并不难,难的是多线程之间进行协调,线程的调度、内存分配、线程间的协作、数据共享。如果这实现这些功能一个任务调度系统是有必要的,FutureTask这个jar包非常适合。
当主线程由main入口出发,所有的实例对象都在当前线程里。而如果在当前线程打开一个Task时后台是开了一个新的线程,这时可以将需要的任务(sql)参数传入新的线程。
线程的特点是在创建启动时不会阻塞当前线程,所以当前线程可以继续开对应的多个线程来处理插入操作。这样可以将你的硬件性能尽可能的压榨。开线程的数量则可和你的硬件结合。
当然你的主线程由于没有阻塞,在执行完成创建你多个线程只是发出创建指令而不会等线程执行完成就执行过去,这时可能为防止调用线程结束(主线程)导致多个子线程没执行完成而被强行结束,这时通常需要对主线程作一个while(ture)无限循环!
excel上传插入太慢了,差不多10秒,所以想试试多线程插入会不会好点
FutureTask
问题是有什么意义呢?
分批一批一批数据批量插入,不要一条一条插入。这样性能好很多的。
spring batch.
根据表的字段多少,内容大小来判断批量执行多少条一次提交事务 不然也会慢
用@Async自然就是多线程的,不用自己写
insert into table sleect * from table 批量插入
楼上说的是对的,FutureTask非常合适题主的需求。多线程实现并不难,难的是多线程之间进行协调,线程的调度、内存分配、线程间的协作、数据共享。如果这实现这些功能一个任务调度系统是有必要的,FutureTask这个jar包非常适合。
当主线程由main入口出发,所有的实例对象都在当前线程里。而如果在当前线程打开一个Task时后台是开了一个新的线程,这时可以将需要的任务(sql)参数传入新的线程。
线程的特点是在创建启动时不会阻塞当前线程,所以当前线程可以继续开对应的多个线程来处理插入操作。这样可以将你的硬件性能尽可能的压榨。开线程的数量则可和你的硬件结合。
当然你的主线程由于没有阻塞,在执行完成创建你多个线程只是发出创建指令而不会等线程执行完成就执行过去,这时可能为防止调用线程结束(主线程)导致多个子线程没执行完成而被强行结束,这时通常需要对主线程作一个while(ture)无限循环!