Как я могу использовать ExecutorService в Java (один пул Executors.newFixedThreadPool () или несколько Executors.newSingleThreadExecutor ()) - PullRequest
0 голосов
/ 09 января 2019

Как лучше всего использовать executorService, если метод someMethod () вызывается несколько раз:

Я сейчас использую:

    public void someMethod() {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future future = executorService.submit(() -> method());
    }

или я должен использовать это так

    ExecutorService executorService = Executors.newFixedThreadPool(8);

    public void someMethod() {
        Future future = executorService.submit(() -> method());
    }

1 Ответ

0 голосов
/ 09 января 2019

Создание исполнителя пула потоков является дорогостоящей операцией, также вам необходимо остановить пулы потоков, когда они не нужны (или это предотвратит выход JVM).

Так что второй вариант более предпочтителен.

Единственный недостаток наличия общего пула thead - это то, что какой-то другой код может отправлять долго выполняющиеся задачи, и ваши задачи, отправленные в someMethod(), могут ждать свободных рабочих потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...