ВІДЕОУРОК № 7. Об'єднання кількох CompletableFuture
Після завершення цього модулю учасники отримають розуміння концепції багатопотокового програмування, ознайомляться з роботою потоків, їх станом та навчаться створювати й використовувати їх. Також будуть ознайомлені з основними ідеями щодо роботи з потоками, як-от м'ютекс, монітор та семафор, та навчаться використовувати ключове слово synchronized, а також семафори для забезпечення одночасного доступу до ресурсів з декількох потоків
Під час цього модулю ви дізнаєтеся про набір колекцій, які оптимальніше та надійніше працюють у багатопотоковому середовищі, ніж стандартні універсальні колекції з пакету java.util. Буде розглянуто реалізацію часто вживаних колекцій. На завершення модулю ви зможете освоїти блокуючі черги, що використовуються для взаємодії з пулами потоків.
На цьому уроці буде розглянуто основи асинхронного програмування з використанням мови Java. У процесі заняття ви ознайомитеся з концепцією асинхронного програмування, визначите різницю між ним та іншими підходами до багатопотокового програмування, і навчитеся створювати та запускати асинхронні завдання.
На цьому занятті буде розглянута робота з групою потоків за допомогою ThreadPool. Ми побудуємо власну реалізацію пула потоків і розглянемо, як керується життєвим циклом потоків за допомогою ExecutorService. В кінці заняття ви пізнаєте особливості такого фреймворку, як Fork/Join, і зрозумієте, навіщо він потрібний, а також навчитеся його використовувати на практиці.
У цьому занятті ми детально розглянемо Future API, звертаючи увагу на нововведення у вигляді класу для роботи з асинхронними завданнями - Experienced Future. Ми вивчимо відмінності між Future та CompletableFuture, а також ознайомимося з деякими інтерфейсами з пакета java.util.function, що широко використовуються в CompletableFuture, і навчимося створювати CompletableFuture.
У цьому уроці ми ретельно вивчимо CompletableFuture, зосередившись на методах runAsync та supplyAsync. Ми проаналізуємо, що означає виняток у контексті асинхронних завдань і як з ними працювати. Крім того, ми ознайомимося з методами exceptionally та handle для обробки виняткових ситуацій.
У цьому уроці буде розглянуто методи thenCombine і thenCompose, які застосовуються для поєднання двох завдань, які можуть бути незалежними або залежними одне від одного відповідно. Крім того, ми детально вивчимо методи allOf і anyOf, які дозволяють об'єднувати більше ніж два завдання, і розглянемо їх практичне використання.
У цьому модулі ми розглянемо аспекти асинхронності у вебдодатках, які побудовані на Spring. Ми докладно проаналізуємо, в яких випадках і для яких завдань слід використовувати анотацію @Async та інтерфейс AsyncConfigurer. Також ми розглянемо відмінності між асинхронним та синхронним виконанням у вебдодатках та опишемо практичні кроки з побудови вебпрограм з використанням асинхронності.
У цьому модулі ми детально ознайомимо вас із ScheduleExecutorService та навчимо, як створювати відкладені завдання з його допомогою. Ми також дослідимо, як використовувати відкладений запуск методів у фреймворку Spring. Ви дізнаєтеся, як кастомізувати стандартний TaskScheduler та як детально контролювати реєстрацію завдань через ScheduledTaskRegistrar та ще ознайомитись з доволі цікавим інтерфейсом SchedulingConfigurer