JUC源码包 -- Executors (1)

323 阅读1分钟

创建线程池的方式

executors只是对创建线程池api的进行外层的封装,没有做实际。
①、创建定长的线程池:

public static ExecutorService newFixedThreadPool(int nThreads) {

    return new ThreadPoolExecutor(nThreads, nThreads,
                                  0L, TimeUnit.MILLISECONDS,
                                  new LinkedBlockingQueue<Runnable>());
}

②、创建单例线程池:

public static ExecutorService newSingleThreadExecutor() {

    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new LinkedBlockingQueue<Runnable>()));
}    

③、创建缓存线程池:

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue<Runnable>());
}

④、创建定时任务的线程池

public static ScheduledExecutorService newScheduledThreadPool(
        int corePoolSize, ThreadFactory threadFactory) {
    return new ScheduledThreadPoolExecutor(corePoolSize, threadFactory);
}

Executor提供了4种创建线程池的方式,其中有4个主要核心参数,corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、workQueue(任务队列)、handler(拒绝策略)。