Я пытаюсь обработать очередь задач из таблицы базы данных как можно быстрее, одновременно ограничивая количество потоков для обработки задач.
Я использую пул потоков фиксированного размера с Executors.newFixedThreadPool (N);
Я хочу знать, есть ли способ узнать, заполнен ли пул потоков, то есть я имею в виду, что в настоящий момент запущено 50 потоков, если так, то я буду ждать доступности потока, прежде чем начинать новый вместо сна основной поток.
Код того, что я хотел бы сделать:
ExecutorService executor = Executors.newFixedThreadPool(N);
ResultSet results;
while( true ) {
results = getWaitingTasksStmt.executeQuery();
while( results.next() && executor.notFull() ) {
executor.submit( new thread( new runnableInheritedClass(results) ) );
}
}