Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.
← К каналу

🔥 Разбираем CompletableFuture: Асинхронность в Java без боли Привет, коллеги!

🔥 Разбираем CompletableFuture: Асинхронность в Java без боли

Привет, коллеги! Сегодня поговорим о CompletableFuture, который помогает писать асинхронный код в Java без коллбэков и потерь в читабельности.

📌 1. Почему CompletableFuture?
В Java давно есть Future, но он неудобен:
❌ Нельзя комбинировать несколько задач.
❌ Блокирует поток при вызове .get().
❌ Нет удобных методов для обработки результатов.

👉 CompletableFuture решает все эти проблемы, позволяя комбинировать задачи, обрабатывать ошибки и не блокировать потоки.



📌 2. Базовый пример использования
import java.util.concurrent.CompletableFuture;

public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
sleep(2000);
return "Привет, мир!";
});

future.thenAccept(result -> System.out.println("Результат: " + result));

System.out.println("Этот текст выведется раньше результата!");
sleep(3000); // Чтобы программа не завершилась раньше времени
}

private static void sleep(int ms) {
try { Thread.sleep(ms); } catch (InterruptedException ignored) {}
}
}

🔹 Здесь supplyAsync() выполняет задачу в другом потоке, а thenAccept() позволяет асинхронно обработать результат.



📌 3. Комбинирование нескольких задач
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "World");

CompletableFuture<String> result = future1.thenCombine(future2, (s1, s2) -> s1 + " " + s2);

System.out.println(result.join()); // Hello World

✅ thenCombine() объединяет результаты двух асинхронных задач.



📌 4. Обработка ошибок (exceptionally)
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
if (Math.random() > 0.5) {
throw new RuntimeException("Что-то пошло не так!");
}
return "Все хорошо!";
}).exceptionally(ex -> "Ошибка: " + ex.getMessage());

System.out.println(future.join());

✅ Если в supplyAsync() произошла ошибка, она обработается в exceptionally(), и программа не упадёт.



📌 5. Запуск нескольких задач параллельно
CompletableFuture<Void> allTasks = CompletableFuture.allOf(
CompletableFuture.runAsync(() -> sleepAndPrint("Задача 1", 1000)),
CompletableFuture.runAsync(() -> sleepAndPrint("Задача 2", 2000)),
CompletableFuture.runAsync(() -> sleepAndPrint("Задача 3", 1500))
);

allTasks.join(); // Дождёмся завершения всех задач

private static void sleepAndPrint(String msg, int ms) {
try { Thread.sleep(ms); } catch (InterruptedException ignored) {}
System.out.println(msg);
}

✅ allOf() позволяет запустить несколько задач параллельно и дождаться их завершения.



📌 Итог
🔹 CompletableFuture – это мощный инструмент для работы с асинхронностью в Java.
🔹 Позволяет избежать блокировок, обрабатывать ошибки, комбинировать задачи.
🔹 Улучшает читаемость кода по сравнению с Future и ExecutorService.

👉 @BookJava
← Предыдущий пост 🚀Как правильно использовать Optional в Java Optional<T> в Java — это мощный и… Следующий пост → 1️⃣ Чем record лучше class в Java? В Java 14 появился record – новый тип клас…
Другие главы канала «Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 14.05.2026
🚀 Используем Optional правильно в Java Сегодня разберем Optional – мощный инс…
👁 282 просмотров
Глава от 13.05.2026
🎥 Вебинар: «Основы Kubernetes: архитектура и абстракции» О чём поговорим: - Клю…
👁 297 просмотров
Глава от 13.05.2026
🧵 Разбираемся с CompletableFuture в Java Сегодня я хочу рассказать вам про Comp…
👁 334 просмотров
Глава от 11.05.2026
🚀 Параметры JVM: Какие ключевые стоит знать? Сегодня я покажу вам самые важные …
👁 435 просмотров
Глава от 07.05.2026
📝 Разбираем @Transactional в Spring: Где Подводные Камни? Давайте обсудимм од…
👁 541 просмотров
Глава от 04.05.2026
📝 Советы по оптимизации Java кода: избавляемся от лишнего Привет, друзья! Сег…
👁 610 просмотров
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
🔍
Архив всех постов Макс
Поиск по тексту среди 5,445,509 постов из 199,484 каналов. Фильтры по дате, видео, репостам и удалённым публикациям.
1 ₽ — 7 дней доступа
далее 490 ₽/мес
Получить доступ за 1 ₽
или войти, если уже есть аккаунт

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@matematik_andrei_channel
Математик Андрей
Получить консультацию о курсах: https://max.ru/tochka_school_sales_bot Задать вопрос, если уже учитесь у нас: https://max.ru/tochka_school_service_bot Заявка на ре
👥 192 425 · +29 492/7д
@obr_mo
Образование Подмосковья
Будьте в курсе главных событий в сфере образования Московской области: новости школ, колледжей, детских садов и вузов. Рассказываем об изменениях в программах, олимпиадах…
👥 76 870 · -409/7д
@Moscow_school
Московское образование
Успех начинается здесь! Приложение «ЗОЖ с МЭШиком» https://max.ru/meshik_app_bot Для СМИ: press-donm@mos.ru Сайт: mosobr.shkolamoskva.ru ВК: vk.com/educationdep ТГ: htt…
👥 68 416 · -547/7д
@bestch
Культура речи • Саморазвитие
Канал для тех, кто хочет удивлять друзей своей эрудированностью. Реклама: clck.ru/3R8TA9 Биржа: https://telega.in/m/bestch Менеджеры: clck.ru/3QxNG7 Русский язык Образо…
👥 59 628 · -575/7д
@iqkot
Образование
Погрузись в мир знаний с каналом «Образование»! Здесь мы делимся свежими идеями для саморазвития, эффективными методиками обучения и полезными ресурсами. Присоединяйся к…
👥 55 560 · -5 864/7д
@Lingvaa
Лингвист | Русский язык Образование
Канал №1 для тех, кто звонИт, а не звОнит! По рекламе: https://clck.ru/3R7DoR Биржа: https://telega.in/c/Lingvaa
👥 53 567 · -114/7д

Популярные посты канала «Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.»

🚀 В чем разница между HashMap и Hashtable в Java? Если вы работаете с Java, то наверняка сталкивались с HashMap и Hashtable. Оба использу…
👁 2 376 просмотров
🚑 Global Exception Handling: Красиво падаем Представьте: пользователь запрашивает ID, которого нет. 🔴 Плохой сценарий: Сервер выплевывает …
👁 2 372 просмотров
map() vs flatMap(): Битва трансформеров Оба метода находятся в конвейере (Intermediate operations) и нужны для преобразования данных. Но ра…
👁 2 370 просмотров
🎁 Optional: Лекарство от NullPointerException Тони Хоар назвал изобретение null своей "ошибкой на миллиард долларов". NullPointerException …
👁 2 368 просмотров
🧩 Микросервисы: Укрощение хаоса (Spring Cloud) Когда у вас один сервис, всё просто. Но когда их становится 10, 20 или 50, возникают вопросы…
👁 2 362 просмотров
💾 Spring Data JPA: SQL больше не нужен? Spring Data JPA это абстракция над Hibernate (который, в свою очередь, является реализацией JPA). …
👁 2 357 просмотров
🎛 Конфигурация Spring Boot: YAML, Профили и Секреты Хардкодить настройки (порты, пароли, URL-ы) в Java-коде - это моветон. Если вам нужно п…
👁 2 348 просмотров
🔮 Pattern Matching в Switch: Типизируй это! Помните этот бесконечный кошмар, когда вам приходит Object, и нужно понять, что внутри? Раньше …
👁 2 345 просмотров
📦 От Кода к Продакшену: JAR и Docker В старые времена (Java EE) процесс деплоя был адом: нужно было установить на сервер Tomcat, настроить …
👁 2 344 просмотров
🧵 Виртуальные потоки: Революция производительности Представьте, что вы строите высоконагруженный сервер. Раньше у вас было два пути: 1. Кл…
👁 2 341 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 339 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 329 просмотров
🚀 Redis + Spring Cache: Турбо-наддув для бэкенда Самая медленная часть любого приложения это ввод-вывод (I/O). Поход в базу данных (Postgre…
👁 2 327 просмотров
🧪 Тестирование в Spring Boot: Спите спокойно Глобально тесты делятся на два лагеря: 1. Unit-тесты (Модульные): Быстрые, изолированные. Про…
👁 2 327 просмотров
🎮 Анатомия REST Controller: Входящие и Исходящие Раньше, чтобы вернуть JSON, нужно было танцевать с бубном. В Spring Boot это делается "из …
👁 2 327 просмотров
Java Records: Убийцы бойлерплейта Сколько раз вы создавали класс просто чтобы "перенести данные" из точки А в точку Б? Вы пишете 3 поля, а …
👁 2 326 просмотров
🍃 Spring Boot: Магия или Логика? (IoC & Beans) Когда вы запускаете Spring-приложение, происходит магия: все нужные объекты создаются сами, …
👁 2 326 просмотров
🔀 Switch Expressions: Прощай, break! Помните это чувство, когда забыл написать break в switch-case, и код пошел выполняться дальше, создав…
👁 2 318 просмотров
📨 Apache Kafka: Нервная система микросервисов Представьте, что вы заказали пиццу. • REST подход: Вы стоите у прилавка и смотрите на повара…
👁 2 315 просмотров
🏗 Порождающие паттерны: Как рождаются объекты? Создать объект просто: User u = new User(). А если у объекта 20 полей? А если нам нужен толь…
👁 2 313 просмотров
🏷 Темы и теги
#spring boot #java #hibernate #docker #собеседование #микросервисы #Образование
📋 О канале Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.
Всё о Java Core, JVM, Multithreading и ООП. Гайды по Hibernate, Kafka, Docker, Kubernetes (K8s) и Microservices. Разбираем SQL, NoSQL и базы данных. Подготовка к интервью: Паттерны, System Design, LeetCode, Roadmap для Junior, Middle, Senior. Новости экосистемы: Kotlin, Android, Maven, Gradle, Git, CI/CD. Тестирование (JUnit, Mockito) и Best Practices разработки высоконагруженных систем.
📊 Аналитика канала «Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.