import java.util.concurrent.*;
/**
* 线程池工具类:
* 处理项目中需要异步处理的任务,例如日志服务,监控服务等
* @author zsc
* @datetime 2017年11月22日 上午11:04:09
*/
public class ThreadPoolUtil {
/** 工具类,构造方法私有化 */
private ThreadPoolUtil() {super();};
// 线程池核心线程数
private final static Integer COREPOOLSIZE = 3;
// 最大线程数
private final static Integer MAXIMUMPOOLSIZE = 10;
// 空闲线程存活时间
private final static Integer KEEPALIVETIME = 3 * 60;
// 线程等待队列
private static BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(10);
// 线程池对象
private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(COREPOOLSIZE, MAXIMUMPOOLSIZE,
KEEPALIVETIME, TimeUnit.SECONDS, queue, new ThreadPoolExecutor.AbortPolicy());
/**
* 向线程池提交一个任务,返回线程结果
* @param r
* @return
*/
public static Future<?> submit(Callable<?> r) {
return threadPool.submit(r);
}
/**
* 向线程池提交一个任务,不关心处理结果
* @param r
*/
public static void execute(Runnable r) {
threadPool.execute(r);
}
/** 获取当前线程池线程数量 */
public static int getSize() {
return threadPool.getPoolSize();
}
/** 获取当前活动的线程数量 */
public static int getActiveCount() {
return threadPool.getActiveCount();
}
}
自定义线程池工具类
最新推荐文章于 2024-03-06 17:23:26 发布