JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Введение в CompletableFuture

    JAVA 25 SELF
    55 уровень,0 лекция
    В этой лекции разберём, почему синхронный код приводит к блокировкам, какие ограничения были у Future (вроде блокирующего get()), и как класс CompletableFuture из пакета java.util.concurrent меняет стиль работы с асинхронностью. Потренируемся запускать задачи фоном через supplyAsync, подписываться на результат с помощью thenAccept/ thenApply, обсудим роль пула ForkJoinPool и типичные ошибки: использование get()/ join() в главном потоке, отсутствие обработки ошибок через exceptionally/ handle, и др.
    Открыта
  • Асинхронные задачи: thenApply, thenAccept, thenRun

    JAVA 25 SELF
    55 уровень,1 лекция
    Разбираем запуск и композицию асинхронных вычислений с помощью CompletableFuture: как стартовать задачи через supplyAsync и runAsync, чем отличаются обработчики thenApply, thenAccept, thenRun, и когда выбирать их асинхронные версии thenApplyAsync/ thenAcceptAsync/ thenRunAsync. Поговорим о потоках выполнения ( ForkJoinPool или ваш Executor), типах результатов ( CompletableFuture<T>, CompletableFuture<Void>) и типичных ошибках: блокирующие get()/ join(), необработанные ошибки без exceptionally/ handle/ whenComplete, а также попытка использовать результат внутри thenRun.
    Открыта
  • Комбинирование CompletableFuture: thenCombine, allOf, anyOf

    JAVA 25 SELF
    55 уровень,2 лекция
    Как параллелить задачи и объединять результаты с помощью CompletableFuture: объединение двух результатов через thenCombine/ thenCombineAsync, ожидание набора задач через allOf, реакция на самый быстрый ответ через anyOf. Разберём сигнатуры, практические примеры с supplyAsync, неблокирующую обработку ( thenAccept, thenRun), а также нюансы ошибок и их обработку ( exceptionally, handle, whenComplete). В конце — компактная таблица сравнения методов.
    Открыта
  • Обработка ошибок в асинхронном коде: exceptionally, handle

    JAVA 25 SELF
    55 уровень,3 лекция
    Как безопасно ловить и обрабатывать исключения в цепочках CompletableFuture: разбираем роли exceptionally (резервное значение при ошибке), handle (универсальный обработчик успеха/ошибки) и whenComplete (побочные действия без изменения результата). Обсудим, почему прямой вызов get()/ join() заворачивает причины в ExecutionException/ CompletionException, как комбинировать этапы ( thenApply, thenAccept) и каких типичных ошибок избегать.
    Открыта
  • thenCompose + кастомный Executor + тайм-ауты

    JAVA 25 SELF
    55 уровень,4 лекция
    Как правильно «склеивать» асинхронные шаги в CompletableFuture с помощью thenCompose и когда достаточно thenApply; как и зачем подключать собственный пул потоков через ExecutorService (вместо ForkJoinPool.commonPool()); как обезопасить цепочки от «вечного ожидания» с помощью orTimeout и completeOnTimeout. В конце — практический пример с кастомным Executor, thenCompose и тайм-аутом, а также типичные ошибки и их решения.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush