Я пытаюсь выполнить пул потоков concurrent.Execute в приложении, которое присваивает параметры каждому потоку. В процессе обработки я обнаружил, что создается больше потоков, чем ожидалось. Также нет возможности выключения. Возможно, приведенный ниже код будет лучше иллюстрировать проблему?
Это метод, к которому в конце концов попадает каждый поток, и Arraylist создается в предыдущем методе. Потоки создаются следующим образом:
Executor executor =
Executors.newFixedThreadPool(threadCount);
for (final String server : serverList) {
executor.execute(new Runnable() {
@Override
public void run() {
while
(!Thread.currentThread().isInterrupted()) {
try {
...
retrieveMetrics(filterItem,pserver,assignedServer,
Bean);
В конце цикла while я попытался реализовать executor.shutdown (), но это не определенный метод. Кроме того, моя реализация выше верна, чтобы фактически разрешить создание только ограниченного числа потоков. Цените советы и ответы здесь.
EDIT:
Я не могу использовать shutdown () по некоторым причинам.
РЕДАКТИРОВАТЬ 2: