Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpExInr 170 of 322 menu
◀ ▶

Исполнители задач в Java

Сайт собирает превью, пишет метрики и отвечает клиенту. На каждое мелкое действие заводить отдельный Thread дорого: память под стеки, переключения планировщика и риск «взрыва» числа потоков при пике нагрузки.

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

Готовые реализации создают через фабрику Executors. Для учебных примеров и типичного сервисного кода часто хватает фиксированного пула с двумя или четырьмя потоками:

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) throws InterruptedException { ExecutorService pool = Executors.newFixedThreadPool(2); pool.execute(() -> System.out.println("background")); pool.shutdown(); pool.awaitTermination(5, java.util.concurrent.TimeUnit.SECONDS); } }

Метод execute ставит Runnable в очередь без возврата ссылки на результат. Если нужен ответ или контроль завершения, используют submit, о нём в следующих уроках.

В Java 27 пулы по-прежнему опираются на те же правила, что и ручные потоки: общая куча, видимость полей и корректное завершение при остановке приложения. Раздел о Thread задаёт базу, здесь смотрим на удобную обёртку для повседневной фоновой работы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить