线程池管理工具类

ε祈祈猫儿з 提交于 2019-12-02 19:25:13
package com.tjy.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.*;

public class ExecutorServiceUtil {
    private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();

    private static Logger logger = LoggerFactory.getLogger("ExecutorServiceUtil");

    private static final BlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(1000);

    private static final ExecutorService executor = new ThreadPoolExecutor(CPU_COUNT+1,
            CPU_COUNT*2+1, 60L, TimeUnit.SECONDS, queue, new RejectedExecutionHandler() {
        public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
            try {
                executor.getQueue().put(r);
            } catch (Exception e) {
                logger.error("线程池入队异常", e);
            }
        }
    });

    public static ExecutorService newExecutorInstance() {
        return executor;
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!