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