因业务需要,需从excel读取数据并插入数据库,由于数据量较大,耗时较长,考虑使用多线程来处理
1.读取到的list按数据量分段
2.动态创建线程
public class ScmcommissionLineServiceImpl{
//导入数据
public void importData(List list){
//500分一组
int count = 500;
int listSize = list.size();
//线程数
int RunSize = (listSize / count)+1;
ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(RunSize);
CountDownLatch countDownLatch = new CountDownLatch(RunSize);
for (int i = 0; i < RunSize; i++) {
List newList = null ;
if((i+1)==RunSize){
int startIndex = (i*count);;
int endIndex = list.size();
newList =list.subList(startIndex,endIndex);
}else{
int startIndex = i*count;;
int endIndex = (i+1)*count-1;
newList =