当我使用 Executors.newFixedThreadPool(10) 时,框架是否在内部创建了一个阻塞队列?有没有办法在创建线程池时提供我自己的队列?从 oracle 文档中我不清楚:这里
问问题
521 次
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 回答