newfixedthreadpool在内部创建一个blockignqueue

时间:2013-07-05 20:44:50

标签: blockingqueue

当我使用Executors.newFixedThreadPool(10)时,框架是否在内部创建了一个阻塞队列?有没有办法在创建线程池时提供自己的队列?我不清楚oracle docs:here

1 个答案:

答案 0 :(得分:1)

是的,确实如此here

通常你需要一个阻塞队列,因为队列的目的是保留作业以防止压倒性的Executor。您可以实现自己的Executor + ExecutorService并在那里使用自定义队列,或者,您可以使用带有impl的ThreadPoolExecutor,类似于:

88     public static ExecutorService More ...newFixedThreadPool(int nThreads) {
89         return new ThreadPoolExecutor(nThreads, nThreads,
90                                       0L, TimeUnit.MILLISECONDS,
91                                       new LinkedBlockingQueue<Runnable>());
92     }

如果队列未阻止,那么您将开始拒绝任务,如上所述here