Java ThreadPoolExecutor — фиксированныйThreadPool ActiveCount = 0, QueueSize = 1, PoolSize = 10JAVA

Программисты JAVA общаются здесь
Anonymous
Java ThreadPoolExecutor — фиксированныйThreadPool ActiveCount = 0, QueueSize = 1, PoolSize = 10

Сообщение Anonymous »

Я создаю пул потоков Java с помощью FixThreadPool с размером пула 10.
Из конструктора

Код: Выделить всё

    public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue());
}
Это означает, что я создал пул потоков с размером основного пула потоков 10 и максимальным размером пула потоков 10. Согласно официальному документу Java 8, это означает, что:
  • Максимум будет 10 потоков, независимо от количества поступающих запросов
  • Очередь будет расти бесконечно
Однако при проверке счетчиков меня смутил следующий счетчик: Приведенный выше счетчик появляется несколько раз, поэтому это не единичная ситуация. Я также вижу такие счетчики: В этом случае запрос все еще находится в очереди, пока размер пула меньше, чем потоки, активно обрабатывающие задачи. Кто-нибудь знает, почему это происходит? Я что-то упустил?

Подробнее здесь: https://stackoverflow.com/questions/783 ... e-1-poolsi

Вернуться в «JAVA»