JavaRush
Акція
Університет
Java FullStack
Python FullStack
AI Native Developer
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Комбінування 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 і тайм-аутом, а також типові помилки та способи їх розв’язання.
    Відкрита
  • Асинхронний I/O: AsynchronousFileChannel (NIO2)

    JAVA 25 SELF
    56 рівень, 0 лекція
    У цій лекції розберемо асинхронний ввід/вивід (AIO) у Java NIO.2: чим він відрізняється від синхронного I/O, як працювати з AsynchronousFileChannel, запускати операції читання/запису через Future і CompletionHandler, а також як впливає вибір пулу потоків ExecutorService. На практиці розглянемо відкриття каналу через open, методи read/ write, схему взаємодії та типові помилки.
    Відкрита
  • Future, CompletionHandler: обробка завершення операцій

    JAVA 25 SELF
    56 рівень, 1 лекція
    Як у Java обробляти завершення асинхронних операцій NIO.2: «обіцянки» через Future і зворотні виклики через CompletionHandler. Розберемо сигнатури read/ write у AsynchronousFileChannel, блокувальне отримання результату через get() і перевірку стану через isDone(), а також неблокуючу обробку в completed()/ failed(). Покажемо практичні приклади читання/запису й коротке порівняння підходів.
    Відкрита
  • Асинхронна обробка текстових файлів

    JAVA 25 SELF
    56 рівень, 2 лекція
    Практикуємо асинхронне введення-виведення в Java: читаємо великі текстові файли блоками в ByteBuffer через AsynchronousFileChannel, коректно перетворюємо байти на символи за допомогою CharsetDecoder, записуємо дані назад асинхронно (через Future або CompletionHandler). Розбираємо проблему «розриву» багатобайтних символів (наприклад, "UTF-8"), підрахунок рядків на льоту, вибір кодувань і типові помилки під час роботи з буферами та каналами.
    Відкрита
  • Обробка помилок в async I/O, скасування операцій

    JAVA 25 SELF
    56 рівень, 3 лекція
    Як коректно перехоплювати й обробляти помилки в асинхронному ввід-виводі Java: колбеки CompletionHandler з методами completed/ failed, логування та сповіщення. Розбираємо скасування операцій через Future і cancel( boolean), наслідки для get() і CancellationException, а також практичні поради: try-with-resources, синхронізація з CountDownLatch/ CompletableFuture та звільнення ресурсів.
    Відкрита
  • Розбір помилок під час асинхронної роботи з файлами

    JAVA 25 SELF
    56 рівень, 4 лекція
    Практичний розбір підводних каменів під час роботи з асинхронним файловим введенням-виведенням у Java NIO: коректне керування буферами ByteBuffer (властивості position/ limit, виклики flip(), clear(), compact()), гонки під час паралельних операцій з AsynchronousFileChannel, закриття ресурсів ( channel.close(), try-with-resources), обробка помилок у CompletionHandler (метод failed(...)), керування життєвим циклом операцій через Future<Integer> і синхронізацію з CountDownLatch, коректна робота з кодуванням через CharsetDecoder, а також вибір відповідного пулу потоків ExecutorService.
    Відкрита
  • Потоки проти віртуальних потоків: відмінності, переваги

    JAVA 25 SELF
    57 рівень, 0 лекція
    Розбираємо, чим відрізняються платформенні потоки від віртуальних: як працює модель « Platform Thread → ОС» і чому вона важка, що змінюється з віртуальними потоками ( Virtual Thread) поверх carrier threads, і як це дає масштабованість без реактивної «локшини». Подивимося на практику з Thread.ofVirtual(), порівняємо поведінку для I/O‑bound і CPU‑bound завдань, торкнемося сумісності (блокувальні виклики на кшталт InputStream.read, Socket.accept) і типових помилок (застарілі механізми синхронізації, очікування «магічного прискорення»).
    Відкрита
  • Створення віртуальних потоків: Thread.ofVirtual().start()

    JAVA 25 SELF
    57 рівень, 1 лекція
    Практика роботи з віртуальними потоками Java 21: чим вони відрізняються від платформенних, як запускати через Thread.startVirtualThread(...) і Thread.ofVirtual().start(...), коли й надалі доречно new Thread(...) або Thread.ofPlatform(), і як масово виконувати завдання за допомогою Executors.newVirtualThreadPerTaskExecutor(). Розберемо очікування завершення через join(), обробку помилок із Future і ExecutionException, а також типові помилки під час використання Virtual Threads.
    Відкрита
  • Масштабованість і продуктивність Virtual Threads

    JAVA 25 SELF
    57 рівень, 2 лекція
    Практичне порівняння платформених потоків Thread і віртуальних потоків Java 21: як JVM завдяки « носіям» (carrier threads) виконує сотні тисяч завдань із мінімальним споживанням пам’яті, де віртуальні потоки розкривають свій потенціал (I/O-bound), а де — ні (CPU-bound). Розберемо обмеження ( synchronized, нативні блокування), найкращі практики ( Executors.newVirtualThreadPerTaskExecutor()), моніторинг через JVisualVM і Java Flight Recorder, а також типові помилки під час переходу на Virtual Threads.
    Відкрита
  • Використання Executor з віртуальними потоками

    JAVA 25 SELF
    57 рівень, 3 лекція
    Розбираємося, як запускати кожне завдання в окремому віртуальному потоці за допомогою Executors.newVirtualThreadPerTaskExecutor() (Java 21), чим це відрізняється від класичних пулів ( newFixedThreadPool, newCachedThreadPool), як коректно завершувати роботу через shutdown() і awaitTermination(...), отримувати результати завдань через Future і де віртуальні потоки дають максимальну перевагу (масовий I/O, веб‑сервери, навантажувальне тестування). Наприкінці — типові помилки та нюанси.
    Відкрита
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • ...
  • 57
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush