2013-07-05 4 views
0

Когда я использую Executors.newFixedThreadPool (10), внутренняя структура создает блокировку? Есть ли способ предоставить свою собственную очередь при создании пула потоков? Мне не ясно, из документов оракула: hereделает newfixedthreadpool внутренне встроенный blockignqueue

+0

вам может понадобиться больше тегов, вы говорите о java? возможно, это было бы более заметно для java-людей, если бы вы пометили его как таковой. –

ответ

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.

 Смежные вопросы

  • Нет связанных вопросов^_^