基于java线程池和EasyExcel实现数据异步导入
2.代码实现
2.1 controller层
@PostMapping("import")
public void importExcel(MultipartFile file) throws IOException {
importService.importExcelAsync(file);
}
2.2 service层
@Resource
private SalariesListener salariesListener;
private ExecutorService executorService = Executors.newFixedThreadPool(20);
public void importExcelAsync(MultipartFile file) {
List<Callable<Object>> tasks = new ArrayList<>();
for (int i = 0; i < 20; i++) {
int num = i;
tasks.add(() -> {
EasyExcel.read(file.getInputStream(), Salaries.class, salariesListener)
.sheet(num).doRead();
return null;
});
}
try {
executorService.invokeAll(tasks);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
2.3实体
@Data
@TableName("salaries")
public class Salaries {
private Integer empNo;
privat