Рубрики
Без рубрики

ExecutorService в Java

ExecutorService (фреймворк пула потоков Java) – В java всегда легко запустить метод или… С пометкой java, учебное пособие.

ExecutorService (фреймворк пула потоков Java) –

В java всегда легко запустить метод или фрагмент кода асинхронно.

например –

В java поток может быть создан двумя способами: 1) Путем расширения класса Thread 2) Путем реализации Runnable Interface

Если мы хотим выполнить задачу асинхронно, мы можем создать новый экземпляр thread и назначить ему задачу. И запустите поток, он будет выполняться асинхронно.

Задача может выполняться асинхронно с использованием потоков. Но, если предположить, что мы хотим выполнить 100000 задач, то нам придется создать 100000 потоков. И каждый поток может выполнять по одной задаче за раз асинхронно. Но создание 100000 потоков для каждой задачи не является возможным решением.

Java ExecutorService – это интерфейс, который позволяет нам выполнять задачи в потоках асинхронно. Интерфейс Java ExecutorService присутствует в пакете java.util.concurrent. ExecutorService помогает поддерживать пул потоков и назначает им задачи. Он также предоставляет возможность ставить задачи в очередь до тех пор, пока не появится свободный поток, если количество задач превышает количество доступных потоков.

Используя службу Executor, мы можем создать пул потоков.

ExecutorService.newFixedThreadPool(10);

Здесь мы создаем пул из 10 потоков. И 100000 задач отправляются в службу исполнителя. Внутренне он назначает каждую задачу потокам, присутствующим в пуле потоков. Одновременно задачу могут выполнять не более 10 потоков. И задачи хранятся в очереди блокировки.

Почему Блокируется Очередь? – Потому что никакие два потока не могут получить доступ к очереди одновременно.

Как только выполнение потоков завершается, оно извлекает следующую задачу из blockingqueue. И впоследствии все потоки, присутствующие в пуле потоков, делают то же самое.

Оригинал: “https://dev.to/sonali_g_/executorservice-in-java-40bd”