需求:导出zip包,需要查询多组数据,并把数据按组写入excel,最后把多个excel中的数据写入压缩包,上传文件服务器。
技术点:线程池进行数据查询及写入excel,之后主线程进行压缩及上传文件服务器。
代码:
private void test() {
Long startTime = System.currentTimeMillis();
ExecutorService pool = Executors.newFixedThreadPool(10);
for (int i = 0; i < 30; i++) {
pool.execute(new Runnable() {
@Override
public void run() {
logger.info("查询数据");
logger.info("写入excel");
}
});
}
pool.shutdown();
while (true) {
if (EXECUTOR_SERVICE.isTerminated()) {
logger.info("线程池关闭,子线程执行结束,耗时:{}ms", (System.currentTimeMillis() - startTime));
break;
}
try {
Thread.sleep(3000);
} catch (Exception e) {
logger.error("线程被意外中断了,导出失败", e);
}
}
logger.info("excel文件进行压缩");
logger.info("压缩文件上传文件服务器");
}