код выполнения пула потоков, но нет возможности выключения в помощнике по содержимому IDE - PullRequest
1 голос
/ 21 мая 2019

Я пытаюсь выполнить пул потоков 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:

no shutdown method

Я не могу использовать shutdown () по некоторым причинам.

РЕДАКТИРОВАТЬ 2:

thread count

1 Ответ

2 голосов
/ 21 мая 2019

Вы должны использовать ниже

ExecutorService executorService = Executors.newFixedThreadPool(threadCount);

вместо

Executor executor =  Executors.newFixedThreadPool(threadCount);
...