0
点赞
收藏
分享

微信扫一扫

单例模式+线程池ThreadPoolExecutor

1、线程池工作原理

单例模式+线程池ThreadPoolExecutor_单例

2、线程池创建

public class ThreadManager {

    private static ThreadPollProxy mThreadPollProxy; //单列对象

    public static ThreadPollProxy getThreadPollProxy() {
//        System.out.println("getThreadPollProxy=====");
        synchronized (ThreadPollProxy.class) {
//            System.out.println("synchronized (ThreadPollProxy.class)=====");
            if (mThreadPollProxy == null) {
//                System.out.println("mThreadPollProxy == null====");
                mThreadPollProxy = new ThreadPollProxy(3, 6, 100);
            }
        }
        return mThreadPollProxy;
    }

    /**
     * 通过ThreadPoolExecutor的代理类来对线程池的管理
     */
    public static class ThreadPollProxy {
        private ThreadPoolExecutor poolExecutor;
        private int corePoolSize;
        private int maximumPoolSize;
        private long keepAliveTime;

        public ThreadPollProxy(int corePoolSize, int maximumPoolSize, long keepAliveTime) {
            this.corePoolSize = corePoolSize;
            this.maximumPoolSize = maximumPoolSize;
            this.keepAliveTime = keepAliveTime;
        }

        public void execute(Runnable r) {
//            System.out.println("public void execute(Runnable r)=====");
            if (poolExecutor == null || poolExecutor.isShutdown()) {
//                System.out.println("poolExecutor == null || poolExecutor.isShutdown()=====");
                poolExecutor = new ThreadPoolExecutor(
                        //核心线程数量
                        corePoolSize,
                        //最大线程数量
                        maximumPoolSize,
                        //当线程空闲时,保持活跃的时间
                        keepAliveTime, //时间单元 ,
                        // 毫秒级
                        TimeUnit.MILLISECONDS,
                        //线程任务队列
                        new LinkedBlockingQueue<Runnable>(),
//                        new ArrayBlockingQueue(10),
                        //创建线程的工厂
                        Executors.defaultThreadFactory());
            }
            poolExecutor.execute(r);
        }
    }

}

举报

相关推荐

0 条评论