Метод newCachedThreadPool
Метод newCachedThreadPool класса Executors создает
кэшированный пул потоков. Такой пул переиспользует ранее
созданные потоки, если они свободны, а если свободных потоков
нет - создает новые. Потоки, которые не использовались в
течение 60 секунд, автоматически завершаются и удаляются
из пула. Метод не принимает параметров и возвращает объект
типа ExecutorService.
Кэшированный пул хорошо подходит для выполнения большого количества коротких асинхронных задач. При этом важно понимать, что количество потоков в пуле не ограничено: если задачи поступают быстрее, чем успевают выполняться, пул будет создавать все новые и новые потоки.
Синтаксис
Executors.newCachedThreadPool()
Пример
Давайте создадим кэшированный пул потоков и отправим в него несколько задач:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args)
{
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 1; i <= 3; i++) {
int taskNumber = i;
executor.execute(() -> {
System.out.println("Task " + taskNumber + " is running");
});
}
executor.shutdown();
}
}
Результат выполнения кода:
"Task 1 is running"
"Task 2 is running"
"Task 3 is running"
Пример
Давайте отправим в кэшированный пул задачи, которые возвращают
результат, и получим значения через объект Future:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Main
{
public static void main(String[] args) throws Exception
{
ExecutorService executor = Executors.newCachedThreadPool();
Future<Integer> future = executor.submit(() -> {
return 2 + 3;
});
int res = future.get();
System.out.println(res);
executor.shutdown();
}
}
Результат выполнения кода:
5
Смотрите также
-
класс
ExecutorService,
который представляет пул потоков -
метод
newFixedThreadPool,
который создает пул с фиксированным числом потоков -
метод
newSingleThreadExecutor,
который создает пул с одним потоком -
метод
shutdown,
который завершает работу пула потоков