ВИДЕОУРОК №4. ExecutorService. ThreadPool. Fork/Join Framework
После завершения этого модуля участники получат понимание концепции многопоточного программирования, ознакомятся с работой потоков, их состоянием и научатся создавать и использовать их. Также будут ознакомлены с основными идеями по работе с потоками, такими как мьютэкс, монитор и семафор, и научатся использовать ключевое слово 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