О курсе
Асинхронность - это способ написания программы или ее части так, чтобы последовательное, шаг за шагом, выполнение программных задач не блокировало начало выполнения новых задач. При такой парадигме программа может начать выполнение следующей задачи, пока предыдущая еще выполняется. Это делает программу более эффективной, способной быстро и своевременно реагировать на запросы.
Этот курс позволит вам сформировать необходимую базу знаний и практических навыков для успешной работы с асинхронным кодом.
Курс "Асинхронное программирование в 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% практики). Больше практики – быстрее овладеете программированием.
Для овладения IT-специальностью нужно выделить не менее 500 часов, из которых около 100 часов – на просмотр видео уроков или посещение онлайн занятий с ментором, а 400 – на выполнение практических заданий по пройденным темам.
В зависимости от того, сколько времени вы готовы выделять на обучение в день, вы сможете пройти программу за 3-8 месяцев. Если у вас есть определенная база знаний по IT, количество необходимого времени будет меньшим.
Также продолжительность обучения зависит от выбранной вами специальности, поскольку набор технологий, которые вы должны изучить, будет разным.
Начинать следует с тех, которые содержат в названии слово “Стартовый”. Такие курсы имеют вводный материал для знакомства с языком или технологией.
Если вы планируете учиться по конкретной специальности в формате видео курсов, перейдите на страницу специальности и прокрутите до заголовка “Видео курсы по специальности …”. Ниже будет список видео курсов, отсортированных в порядке необходимости изучения.
Ещё ниже вы найдете Roadmap по специальности – путеводитель, на котором изображены видео курсы в виде дерева, что также легко сориентирует вас в последовательности прохождения курсов.
Если вы выбираете Live Online обучение с тренером, всё очень просто:
- посещайте все занятия, вовремя выполняйте д/з;
- дополнительно смотрите видео уроки на ITVDN;
- после каждого урока проходите краткое тестирование;
- практикуйтесь в Интерактивном практикуме;
- общайтесь с одногруппниками в ходе решения д/з, задавайте вопросы ментору на уроках и вне их;
- в конце каждого курса сдавайте экзамен на TestProvider (и получайте Сертификаты);
- в конце всего обучения проходите экзамен по специальности и получите диплом.
Мы имеем специальный раздел – “Вакансии”, который помогает нашим студентам искать первую работу в IT. Детальнее о возможностях и о разделе по ссылке.
А для тех, кто учится онлайн с ментором, у нас дополнительно предусмотрена индивидуальная помощь HR-специалиста по подготовке к трудоустройству с первого дня обучения и до получения первого job-оффера. Она включает в себя помощь в оформлении соцсетей, подготовке резюме, проведении пробного собеседования, предоставлении советов по поиску работы и самопрезентации и т. д.
К сожалению, данная услуга ITVDN не предусмотрена, однако вы можете заказать индивидуальную консультацию с нашим ментором. Подробности вы найдете по ссылке.
На ITVDN отсутствуют курсы для детей, поэтому комфортный возраст для начала обучения по нашим материалам – от 14 лет.
Никаких требований к вашему уровню английского мы не выдвигаем, поскольку все учебные материалы идут на русском или украинском языках. При этом базовые знания английского будут полезны для комфортного поиска информации в гугле, чтения документаций в интернете и прочего.
На ITVDN можно пройти полное обучение с нуля до специалиста уровня Trainee/Junior. Если вы уже практикующий разработчик, наши видео курсы помогут углубить ваши знания до уровня Middle.
После окончания действия вашей подписки доступ к видео курсам, к сожалению, будет закрыт. Однако вы сможете пользоваться теми учебными материалами, которые вы скачали на свой девайс во время обучения.
Нет, скидки не суммируются.
Отзывы наших студентов
Отзывы в DOU
4,9/5 - 200 отзывов
Отзывы в Facebook
5,0/5 - 707 отзывов
Отзывы в Google
4,9/5 - 836 отзывов