РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1069 of 1163 menu

Метод runAsync

Метод runAsync класса CompletableFuture запускает асинхронную задачу, которая не возвращает результата. В первый параметр мы передаем объект Runnable - задачу, которая будет выполнена в отдельном потоке. Вторым необязательным параметром можно передать объект Executor - пул потоков, в котором будет выполняться задача. Если исполнитель не указан, используется пул потоков по умолчанию (ForkJoinPool.commonPool).

Метод возвращает объект CompletableFuture<Void>, который завершается, когда задача выполнена. Так как задача не возвращает значения, тип результата - Void.

Синтаксис

CompletableFuture.runAsync(Runnable runnable) CompletableFuture.runAsync(Runnable runnable, Executor executor)

Пример

Давайте запустим простую асинхронную задачу, которая выводит сообщение в консоль:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { System.out.println("Task is running"); }); future.join(); System.out.println("Done"); } }

Результат выполнения кода:

"Task is running" "Done"

Пример

Давайте передадим собственный пул потоков через второй параметр метода:

import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { System.out.println("Running in custom pool"); }, executor); future.join(); executor.shutdown(); System.out.println("Done"); } }

Результат выполнения кода:

"Running in custom pool" "Done"

Пример

Давайте запустим несколько асинхронных задач и дождемся их завершения:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<Void> f1 = CompletableFuture.runAsync(() -> { System.out.println("Task 1"); }); CompletableFuture<Void> f2 = CompletableFuture.runAsync(() -> { System.out.println("Task 2"); }); CompletableFuture.allOf(f1, f2).join(); System.out.println("All tasks finished"); } }

Результат выполнения кода:

"Task 1" "Task 2" "All tasks finished"

Смотрите также

  • метод supplyAsync,
    который запускает задачу с возвращаемым результатом
  • метод thenRun,
    который выполняет действие после завершения
  • метод allOf,
    который ожидает завершения всех задач
  • класс CompletableFuture,
    который представляет асинхронные вычисления
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить