Когда я использую Executors.newFixedThreadPool (10), внутренняя структура создает блокировку? Есть ли способ предоставить свою собственную очередь при создании пула потоков? Мне не ясно, из документов оракула: hereделает newfixedthreadpool внутренне встроенный blockignqueue
0
A
ответ
0
Да, это так, как найдено here.
Обычно вам нужна блокирующая очередь, так как цель очереди заключается в том, чтобы удержаться на заданиях, чтобы предотвратить подавление Executor
. Вы могли бы реализовать свой собственный Executor
+ ExecutorService
и использовать пользовательскую очередь там, или вы могли бы использовать 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.
вам может понадобиться больше тегов, вы говорите о java? возможно, это было бы более заметно для java-людей, если бы вы пометили его как таковой. –