В Java фреймворк Executors даёт простой способ создать пул потоков без ручного управления отдельными потоками. Самый частый подход — использовать метод newFixedThreadPool().
Метод Executors.newFixedThreadPool(int nThreads) создаёт пул потоков с фиксированным числом рабочих потоков. Такой подход идеален, когда ты точно знаешь, сколько одновременных задач нужно обработать.
Основные преимущества:
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService myService = Executors.newFixedThreadPool(5);
Future<Integer>[] futureList = new Future[5];
// Отправляем задачи в пул потоков
for (int i = 0; i < futureList.length; i++) {
futureList[i] = myService.submit(new MyCallable());
}
// Получаем результаты выполненных задач
for (int i = 0; i < futureList.length; i++) {
Integer retVal = futureList[i].get();
println(retVal);
}
myService.shutdown();
}
submit(): отправляет callable-задачу в пул и возвращает Futureget(): блокирует выполнение до завершения задачи и возвращает результатshutdown(): корректно завершает пул потоков после выполнения всех задачВот другие варианты в зависимости от того, что тебе нужно:
newCachedThreadPool() — создаёт потоки по требованиюnewSingleThreadExecutor() — использует один рабочий потокnewScheduledThreadPool() — для запланированных или периодических задачМетод Executors.newFixedThreadPool(int nThreads) создаёт пул потоков, в котором количество рабочих потоков может динамически увеличиваться или уменьшаться в зависимости от нагрузки задач.
Новый — ещё не проверен сообществом
Вы