Иногда операция может зависнуть, чтобы программа не ждала бесконечно, можно задать таймаут выполнения.
Если задача не успела она прерывается и возвращается ошибка.
Создаём пул потоков для выполнения задач:
var pool = java.util.concurrent.Executors.newSingleThreadExecutor();
Оборачиваем операцию в Future:
var future = pool.submit(() -> {
Thread.sleep(2000); // имитация долгой операции
return "Готово";
});Пытаемся получить результат с таймаутом:
try {
var result = future.get(1, java.util.concurrent.TimeUnit.SECONDS);
System.out.println(result);
}Если время вышло прерываем задачу:
catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
System.out.println("Операция превысила лимит времени");
}Не забываем завершить пул потоков:
pool.shutdown();
Теперь любая операция может выполняться с ограничением по времени.
👉 Java Ready | #практика