2023-05-23 15:18:30 +08:00

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;
}
}