java线程池管理多线程的应用
2018-01-31 17:54
176 查看
最近有一个需求,前端点击一个按钮,后端需要多线程执行任务,执行完返回结果到前端。使用线程池实现,每次调用新建线程池对象,使用完销毁线程池对象,这个用的是spring线程池,java自带的线程池效果差不多,代码如下:
实现代码:
生成线程池的类:
实现代码:
public String testThreadPool() { ThreadPoolTaskExecutor threadPoolTaskExecutor = ThreadPoolUtils.getThreadPool(); //开启50个线程 for (int i = 1; i <= 50; i++) { int index = i; threadPoolTaskExecutor.execute(new Thread(new Runnable() { @Override public void run() { //TODO 处理业务 System.out.println(index); } })); } while (true) { //sleep 2秒 try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } //如果活跃的线程为0,则说明任务处理完毕 if (threadPoolTaskExecutor.getActiveCount()<1) { System.out.println("结束了!"); //销毁线程池 threadPoolTaskExecutor.destroy(); break; } } return "任务处理完毕!"; }
生成线程池的类:
package capital.core.utils; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; /** * 线程池util * @author tanqian * @date 2018年1月30日 */ public class ThreadPoolUtils { /** * 返回一个初始化完成的线程池对象 * @return */ public static ThreadPoolTaskExecutor getThreadPool() { ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); //最小线程数 threadPoolTaskExecutor.setCorePoolSize(20); //最大线程数 threadPoolTaskExecutor.setMaxPoolSize(50); //空闲线程存活时间 threadPoolTaskExecutor.setKeepAliveSeconds(1000); //队列中最大线程 threadPoolTaskExecutor.setQueueCapacity(50); //初始化 threadPoolTaskExecutor.initialize(); return threadPoolTaskExecutor; } }
相关文章推荐
- 如何应用CLR线程池来管理多线程
- Spring事务管理高级应用难点剖析之多线程的困惑
- android中对服务的应用管理 .
- 有效应用脚本工具,提升运营管理效率
- 企业移动应用管理平台 - MDM,MAM,MCM
- 比较好的方式管理我们的应用判断,比如Activity跳转,网络是否连接,判断json....
- Linux vim的应用和管理输入和输出
- 多线程和并发库应用一传统定时器
- Spring 事务管理高级应用难点剖析: 第 1 部分
- Lotus Domino服务器及其应用系统的高级管理(3)
- Android应用及应用管理简介
- 做服务的必看:应用性能管理成熟度模型 --Idea Worth Spread
- 信息编码管理体系的建设和实施应用指导[转]
- 主机管理和报表应用
- 应用360云盘与SVN版本管理服务器搭建基于云端的版本控制软件
- 塑胶行业应用点――水口料的基本知识及相关管理
- 艾伟:C#多线程学习(五) 多线程的自动管理(定时器)
- Docker 管理应用数据 - 使用 volume
- Spring 事务管理高级应用难点剖析: 第 3 部分
- 多线程在网络编程中的应用