//批量执行sql
public void updateSqlSer(String sqls) {
Date startTime = new Date();
int taskSize = 5;
// 创建一个线程池
ExecutorService executorService = Executors.newFixedThreadPool(taskSize);
// 创建多个任务
List<String> list = Arrays.asList(sqls.split(";"));
int perSize = 0;
if(list.size() % taskSize == 0){
perSize = list.size() / taskSize;
}else {
perSize = (list.size() / taskSize) + 1;
}
for (int i = 0; i < taskSize; i++) {
if(i * perSize > list.size()){
return;
}
List<String> sqlList = list.subList(i * perSize, Math.min(((i + 1) * perSize), list.size()));
if(sqlList.size() == 0){
return;
}
executorService.submit(() -> {
for (String sql : sqlList) {
if (!Strings.isNullOrEmpty(sql) && !sql.equals(";")) {
metaService.executeSql(sql);
}
}
});
}
// 关闭线程池
executorService.shutdown();
//等待所有任务都执行结束
while (true) {
//所有的子线程都结束了
if (executorService.isTerminated()) {
Date endTime = new Date();
logger.info("---- 主程序结束运行 ----,程序运行耗时【" + (endTime.getTime() - startTime.getTime()) + "毫秒】");
break;
}
}
}
`