【java】主线程等待子线程执行结束后再执行,线程池

简介: 【java】主线程等待子线程执行结束后再执行,线程池

需求:导出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.     }


相关文章
|
6天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
41 0
|
18天前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
49 16
|
27天前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
1月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
2月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
288 83
|
2月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
134 0
|
2月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
238 83
|
3月前
|
移动开发 Java
说一说 Java 是如何实现线程间通信
我是小假 期待与你的下一次相遇 ~