Про курс
Асинхронність - це спосіб написання програми чи її частини так, щоб послідовне, крок за кроком, виконання програмних завдань не блокувало початок виконання нових завдань. За такою парадигмою програма може розпочати виконання наступного завдання, доки попереднє ще виконується. Це робить програму більш ефективною, здатною швидко та вчасно реагувати на запити.
Цей курс дозволить вам сформувати необхідну базу знань та практичних навичок для успішної роботи з асинхронним кодом
Курс «Асинхронне програмування в Java» починається з огляду особливості багатопоточного програмування. Ви ознайомитесь з роботою потоків, їх станом, навчитеся створювати й використовувати їх. Також ви ознайомитесь з основними ідеями щодо роботи з потоками та механізмами, як-от м'ютекс, монітор та семафор.
На другому уроці ви дізнаєтеся про набір спеціалізованих колекцій, які оптимальніше та надійніше працюють у багатопоточному середовищі, ніж стандартні універсальні колекції з пакету java.util.
Ви розглянете основи асинхронного програмування у мові Java. Також ознайомитеся з концепцією асинхронного програмування, визначите різницю між ним та іншими підходами до багатопоточного програмування, і навчитеся створювати та запускати асинхронні завдання.
Ви зможете зрозуміти, як працювати з групою потоків за допомогою ThreadPool, побудуєте власну реалізацію пула потоків і розглянете, як керувати життєвим циклом потоків за допомогою ExecutorService.
Далі ми детально розглянемо Future API, вивчимо відмінності між Future та CompletableFuture, а також ознайомимося з деякими інтерфейсами з пакета java.util.function, що широко використовуються в CompletableFuture. Ви навчитеся створювати CompletableFuture, а також використовувати методи runAsync та supplyAsync і методи thenCombine, і thenCompose, які застосовуються для поєднання двох завдань. Крім того, ми детально розглянемо методи allOf і anyOf, які дозволяють об'єднувати більше ніж два завдання, і розглянемо їх практичне використання.
Продовжуючи курс, ми розглянемо важливі аспекти використання асинхронності у вебдодатках, які побудовані на Spring. Ми детально проаналізуємо, в яких випадках і для яких завдань слід використовувати анотацію @Async та інтерфейс AsyncConfigurer. Також ми розглянемо відмінності між асинхронним та синхронним виконанням у вебдодатках та опишемо практичні кроки з побудови вебпрограм з використанням асинхронності.
Ви познайомитесь з ScheduleExecutorService та навчитеся створювати відкладені завдання з його допомогою. Ми також дослідимо, як використовувати відкладений запуск методів у фреймворку Spring, ознайомимося з обробкою асинхронних помилок в Spring framework. Ми детально розглянемо проблеми з тестуванням асинхронного коду та познайомимося з готовим рішенням: бібліотекою Awaitility - розберемо її ключові методи (await, unit, atLeast, atMost, pollInterval) та розглянемо практичні приклади написання юніт тестів для тестування асинхронного коду.
На останньому уроці ми розглянемо важливі патерни проєктування - Producer-Consumer та Scatter-Gather. Ви розберетеся в тому, як ці патерни працюють, і дізнаєтеся про різні інструменти, що ґрунтуються на них. Крім теоретичного аспекту, ви також побачите практичні реалізації цих патернів, що дозволить вам ефективно використовувати їх у проєктуванні своїх багатопотокових додатків.
Попередні Вимоги
Даний курс адресований професіоналам в галузі розробки, які вже мають досвід у програмуванні на Java, але бажають поглибити свої знання в області багатопотоковості та асинхронності. Також курс буде корисний студентам, що послідовно вивчають цю мову програмування і вже опанували її на рівні Java Professional.
Ви навчитеся
- Створювати та запускати потоки.
- Працювати із потокобезпечними колекціями.
- Використовувати ExecutorService та ThreadPool для управління потоками.
- Використовувати Fork/Join Framework для вирішення проблеми з використанням паралельного підходу «розділяй та володарюй».
- Використовувати Future та CompletableFuture для роботи з асинхронними завданнями.
- Ловити та обробляти винятки, отримані при виконанні асинхронного коду.
- Використовувати асинхронність у вебзастосунках на Spring Framework.
- Керувати виконанням завдань, створюючи користувальницький планувальник задач.
- Тестувати асинхронний код за допомогою бібліотеки Awaitility.
- Реалізувати патерни проєктування Producer Consumer та Scatter-Gather.
- 6 год 58 хв
- 12
- українська
Що входить до курсу
×
Ви дійсно бажаєте відкрити доступ до тестування за курсом Асинхронне програмування на Java на 40 днів?
Після завершення цього модулю учасники отримають розуміння концепції багатопотокового програмування, ознайомляться з роботою потоків, їх станом та навчаться створювати й використовувати їх. Також будуть ознайомлені з основними ідеями щодо роботи з потоками, як-от м'ютекс, монітор та семафор, та навчаться використовувати ключове слово 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
У цьому модулі ми ознайомимося з обробкою асинхронних помилок в Spring framework. З`ясуємо, що таке асинхронні помилки та розберемо, як обробляти помилки в асинхронних та запланованих задачах. Та наприкінці разом з глядачем створимо простенький Spring web-application з обробкою асинхронних помилок.
У цьому уроці ми розберемо проблеми з тестуванням асинхронного коду та детально познайомимося з готовим рішенням: бібліотекою Awaitility. Ми розберемо її ключові методи: await, unit, atLeast, atMost, pollInterval. Та розглянемо практичні приклади написання юніт тестів для тестування асинхронного коду.
У цьому курсі ви детально ознайомитеся з двома патернами проєктування - Producer-Consumer та Scatter-Gather. Ви розберетеся в тому, як ці патерни працюють, і дізнаєтеся про різні інструменти, що ґрунтуються на них. Крім теоретичного аспекту, ви також побачите практичні реалізації цих патернів, що дозволить вам ефективно використовувати їх у проєктуванні своїх багатопотокових додатків.
Запитання і відповіді
Онлайн курси мають низку переваг перед офлайн форматом:
- Незалежність від локації. Онлайн дозволяє навчатися де завгодно.
- Збереження часу та грошей на дорогу. Ви економите час та гроші з поїздок на курси та назад.
- Онлайн курси дешевші. Немає потреби в приміщенні та ноутбуках для студентів, тому вартість нижча
- Комфортний темп навчання, постійний доступ до інформації. Навчання у вашому темпі будь-коли і будь-де 24/7. Також є доступ до записаних уроків, чого немає в офлайн форматі.
На ITVDN є 2 формати навчання: Live Online та відео курси. Ціна навчання залежить від обраного вами способу навчання.
Якщо ви хочете навчатися самостійно у форматі відео курсів, вартість навчання складе в середньому 10-15 USD на місяць в залежності від обраного вами пакету підписки.
Live Online – це онлайн навчання з тренером у групах разом із іншими студентами. Навчання у даному форматі коштує в середньому 6-7 USD за одну годину.
Залежить від того, скільки уваги програмуванню ви виділятимете щоденно, яка саме це мова і який у вас досвід кодингу. Середній час на опанування однієї мови за умови регулярних занять хоча б 2 год/день:
- новачки – від 3 до 6 місяців;
- ті, хто мають базові знання з іншої мови – від 1 до 3 місяців;
- професійні програмісти – до 1 місяця.
Найкращий варіант інвестиції часу – 8 годин щоденно (20% теорії + 80% практики). Більше практики – швидше опанування програмування.
Для опанування ІТ-спеціальності треба виділити не менше 500 годин, з яких близько 100 годин – на перегляд відео уроків або відвідування онлайн занять із ментором, а 400 – на виконання практичних завдань за пройденими темами.
В залежності від того, скільки часу ви готові виділяти на навчання в день, ви зможете пройти програму за 3-8 місяців. Якщо у вас є певна база знань з ІТ, кількість необхідного часу буде меншою.
Також тривалість навчання залежить від обраної вами спеціальності, оскільки набір технологій, які ви маєте вивчити, буде різним.
Починати варто з тих, які містять в назві слово “Стартовий”. Такі курси мають вступний матеріал для знайомства з мовою або технологією.
Якщо ж ви плануєте навчатися за конкретною спеціальністю у форматі відео курсів, перейдіть на сторінку спеціальності і прокрутіть до заголовку “Відео курси за спеціальністю …”. Нижче буде список відео курсів, котрі відсортовано в порядку необхідності вивчення.
Ще нижче ви знайдете Roadmap зі спеціальності – путівник, на якому зображені відео курси у вигляді дерева, що також вас легко зорієнтує у послідовності проходження курсів.
Якщо ви обираєте Live Online навчання з тренером, все дуже просто:
- відвідуйте всі заняття, вчасно виконуйте д/з;
- додатково дивіться відео уроки на ITVDN;
- після кожного уроку проходьте коротке тестування;
- практикуйтеся в Інтерактивному практикумі;
- спілкуйтеся з одногрупниками в ході вирішення д/з, задавайте питання ментору на уроках та поза ними;
- в кінці кожного курсу складайте екзамен на TestProvider (та отримуйте Сертифікати);
- в кінці всього навчання проходьте екзамен зі спеціальності і отримайте Диплом.
Ми маємо спеціальний розділ – “Вакансії”, котрий допомагає нашим студентам шукати першу роботу в ІТ. Детальніше про можливості та призначення розділу за посиланням.
А для тих, хто навчається онлайн з ментором, у нас додатково передбачена індивідуальна допомога HR-фахівця щодо підготовки до працевлаштування з першого дня навчання і до отримання першого job-оферу. Вона включає в себе допомогу в оформленні соцмереж, підготовці резюме, проведення пробної співбесіди, надання порад щодо пошуку роботи та самопрезентації тощо.
На жаль, дана послуга на ITVDN не передбачена, однак ви можете замовити індивідуальну консультацію з нашим ментором. Деталі ви знайдете за посиланням.
На ITVDN відсутні курси для дітей, тому комфортний вік для початку навчання за нашими матеріалами – від 14 років.
Ніяких вимог до вашого рівня англійської ми не висуваємо, оскільки всі навчальні матеріали йдуть російською або українською мовами. При цьому базові знання англійської будуть корисні для комфортного пошуку інформації в гуглі, читання документацій в інтернеті тощо.
На ITVDN можна пройти повне навчання з нуля до спеціаліста рівня Trainee/Junior. Якщо ви вже практикуючий розробник, наші відео курси допоможуть поглибити ваші знання до рівня Middle.
Після закінчення дії вашої підписки доступ до відео курсів, на жаль, буде закрито. Однак ви зможете користуватися тими навчальними матеріалами, які ви завантажили на свій девайс під час навчання.
Ні, знижки не додаються.
Відгуки наших студентів
Відгуки в DOU
4,9/5 - 195 відгуків
Відгуки в Facebook
5,0/5 - 704 відгуки
Відгуки в Google
4,9/5 - 814 відгуки