JavaRush
Акція
Університет
Java FullStack
Python FullStack
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