Многопоточность

Что такое FutureTask?


`FutureTask` - это класс в Java, который реализует интерфейс `RunnableFuture` . Он представляет собой объект, который может быть выполнен в отдельном потоке и возвращать результат. `FutureTask` позволяет асинхронно выполнять задачу и получать результат этой задачи в будущем. Он предоставляет методы для проверки состояния выполнения задачи, ожидания ее завершения и получения результата. Пример использования `FutureTask` : Callable<Integer> callable = () -> { // выполнение задачи return 42; // возвращаемый результат }; FutureTask<Integer> futureTask = new FutureTask<>(callable); Thread thread = new Thread(futureTask); thread.start(); // ожидание завершения задачи try { Integer result = futureTask.get(); System.out.println("Результат: " + result); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } В этом примере мы создаем объект `FutureTask` , передавая ему `Callable` в качестве аргумента конструктора. Затем мы создаем отдельный поток и запускаем `FutureTask` в этом потоке. После запуска мы ожидаем завершения задачи с помощью метода `get()` , который блокирует текущий поток до тех пор, пока задача не завершится. Затем мы получаем результат задачи и выводим его на экран. `FutureTask` также предоставляет другие полезные методы, такие как `cancel()` для отмены задачи, `isDone()` для проверки завершения задачи, `isCancelled()` для проверки, была ли задача отменена, и т. д. `FutureTask` часто используется вместе с `ExecutorService` , который позволяет управлять пулом потоков для выполнения задач. В целом, `FutureTask` позволяет выполнять задачи асинхронно и получать результаты этих задач в будущем, что очень полезно в многопоточном программировании и параллельных вычислениях.


Копировать ссылку