java线程池管理多线程的应用

最近有一个需求,前端点击一个按钮,后端需要多线程执行任务,执行完返回结果到前端。使用线程池实现,每次调用新建线程池对象,使用完销毁线程池对象,这个用的是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;
	}

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值