0

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

4

1 回答 1

1

是的,确实如此,如此处所示

通常你确实想要一个阻塞队列,因为队列的目的是保持作业以防止压倒性Executor的。您可以实现自己的Executor+ExecutorService并在其中使用自定义队列,或者,您可以将 aThreadPoolExecutor与您的 impl 一起使用,类似于以下内容:

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

如果队列没有阻塞,那么您将开始拒绝任务,如此所述。

于 2013-10-08T22:16:35.900 回答