66 lines
2.7 KiB
Java
66 lines
2.7 KiB
Java
package com.tenwa.httpclient.pboc;
|
|
|
|
import org.apache.log4j.LogManager;
|
|
import org.apache.log4j.Logger;
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
|
import javax.servlet.ServletContextEvent;
|
|
import javax.servlet.ServletContextListener;
|
|
|
|
public class PbocThreadPool implements ServletContextListener {
|
|
private static final Logger logger = LogManager.getLogger(PbocThreadPool.class);// 引入logger日志
|
|
private static volatile ThreadPoolTaskExecutor threadPool;
|
|
private static boolean flag = false;
|
|
|
|
|
|
@Override
|
|
public void contextInitialized(ServletContextEvent servletContextEvent) {
|
|
logger.info("==================================PbocThreadPool.contextInitialized.start===============================");
|
|
}
|
|
|
|
@Override
|
|
public void contextDestroyed(ServletContextEvent servletContextEvent) {
|
|
try {
|
|
logger.info("==================================PbocThreadPool.contextDestroyed.start===============================");
|
|
if(threadPool != null){
|
|
threadPool.shutdown();
|
|
logger.info("==================================PbocThreadPool.contextDestroyed.end============shutdown===================");
|
|
}else {
|
|
logger.info("==================================PbocThreadPool.contextDestroyed.end===============================");
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
logger.info("==================================PbocThreadPool.contextDestroyed.error===============================");
|
|
}
|
|
}
|
|
|
|
public PbocThreadPool(){
|
|
}
|
|
|
|
public static ThreadPoolTaskExecutor getInstance(){
|
|
logger.info("==================================PbocThreadPool.getInstance.start===============================");
|
|
if(!flag){
|
|
synchronized (ThreadPoolTaskExecutor.class){
|
|
if(threadPool == null){
|
|
// 设置线程池线程数量
|
|
threadPool = new ThreadPoolTaskExecutor();
|
|
// 线程池维护线程的最少数量
|
|
threadPool.setCorePoolSize(3);
|
|
// 线程池维护线程的最大数量
|
|
threadPool.setMaxPoolSize(6);
|
|
//设置线程名称前缀
|
|
threadPool.setThreadNamePrefix("bigdata_http_pboc_");
|
|
//设置队列长度
|
|
threadPool.setQueueCapacity(10);
|
|
// threadPool.setKeepAliveSeconds(300);
|
|
// 当调度器shutdown被调用时等待当前被调度的任务完成
|
|
threadPool.setWaitForTasksToCompleteOnShutdown(true);
|
|
threadPool.initialize();
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
return threadPool;
|
|
}
|
|
}
|