У меня странная проблема с Java ThreadPool
Я определяю executorService следующим образом:
ExecutorService executorService = Executors.newFixedThreadPool(5)
и позже отправьте задачи:
while (!manager.stop()) {
File file = getFile();
if (file != null) {
String name = file.getName();
log.debug("add new task with name {}", name);
outExecutorInfo();
Future<?> task = executorService.submit(getTask(file));
outTaskInfo(task);
executeTasks.put(name, task);
outExecuteTasks();
}
}
outExecuteTasks регистрирует некоторую отладочную информацию, включая количество задач:
log.debug("activeCount={}, completedTaskCount={}, taskCount={}. poolSize={}",
new Object[] { activeCount, completedTaskCount,taskCount, poolSize });
через некоторое время (после выполнения 50-100 заданий в соответствии со счетчиком выполненных задач пула потоков) я вижу странное поведение - отправленные задания добавляются в очередь пула, но не выполняются вообще ThreadPool сообщил об активных задачах = 0, размер очереди задач большой и считается, и ни одна из задач не была выполнена в соответствии с журналом.
У кого-то есть проблемы?