Добавить в корзинуПозвонить
Найти в Дзене
DEBAGanov

Java 208. Как реализовать пул потоков?

Реализация пула потоков может быть достаточно простой, если использовать стандартный Java-интерфейс ExecutorService. Вот пример реализации простого пула потоков: import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// Создаем ExecutorService с фиксированным количеством потоков (например, 5) ExecutorService executor = Executors.newFixedThreadPool(5);
// Подаем задания на выполнение for (int i = 0; i < 10; i++) {
executor.execute(new Task(i));
}
// Завершаем работу пула потоков после того, как все задания выполнены executor.shutdown();
}
}
class Task implements Runnable {
private int taskId;
public Task(int id) {
this.taskId = id;
}
@Override public void run() {
System.out.println("Task #" + taskId + " is running");
}
} В этом примере мы создаем ExecutorService с

Реализация пула потоков может быть достаточно простой, если использовать стандартный Java-интерфейс ExecutorService. Вот пример реализации простого пула потоков:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPoolExample {
public static void main(String[] args) {
// Создаем ExecutorService с фиксированным количеством потоков (например, 5) ExecutorService executor = Executors.newFixedThreadPool(5);

// Подаем задания на выполнение for (int i = 0; i < 10; i++) {
executor.execute(new Task(i));
}

// Завершаем работу пула потоков после того, как все задания выполнены executor.shutdown();
}
}

class Task implements Runnable {
private int taskId;

public Task(int id) {
this.taskId = id;
}

@Override public void run() {
System.out.println("Task #" + taskId + " is running");
}
}

В этом примере мы создаем ExecutorService с фиксированным количеством потоков (5) и подаем ему задания на выполнение в цикле. Каждое задание представлено объектом класса Task, который реализует интерфейс Runnable. В данном примере каждое задание просто выводит сообщение в консоль.

После того, как все задания выполнены, мы вызываем метод shutdown () у ExecutorService, чтобы завершить работу пула потоков.

Конечно, это только базовый пример реализации пула потоков. В зависимости от требований проекта можно использовать различные стратегии управления потоками, например, изменять количество потоков в пуле в зависимости от загрузки системы или использовать различные методы обработки ошибок и т.д.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov