КАК ИСПОЛЬЗОВАТЬ МНОГОПОТОЧКУ НА ПРАКТИКЕ И ЛЕГКО ПРОХОДИТЬ СОБЕСЕДОВАНИЯ
Длительность: 2-3 месяца
Формат: онлайн
Многопоточное программирование на Java
Диана, ведущий Java разработчик
Многопоточка часто остаётся "слепым пятном" у разработчиков. Многие знают про экзекьюторы, synchronized и volatile, а на практике пишут устаревший, медленный и некорректный код.

Почему так происходит?

Большая часть курсов и статей не уходит дальше класса Thread и экзекьюторов. Есть хорошая книга Java Concurrency In Practice, но она 2005 года. С тех пор появились новые инструменты и новые подходы к написанию кода.

Ошибки многопоточки проявляются под высокой нагрузкой. На большинстве проектов её нет, поэтому создаётся ощущение "и так норм".

Но грамотный разработчик видит узкие места системы. Предвидит ошибку, которая случится через месяц и рационально использует вычислительные ресурсы.

На курсе я подробно расскажу про многопоточку от простого к сложному. Покажу лучшие практики и основные ошибки, примеры из своего опыта и популярных проектов.
Кому идеально подойдёт

Вы знаете основы многопоточности, но чувствуете, что этого недостаточно.


Вы хотите знать об актуальных решениях и основных ошибках, чтобы уверенно решать задачи.


Проходить сложные собеседования и вписываться в интересные проекты

Что нужно для комфортного обучения
  • Опыт разработки на Java от года
  • Начальные знания многопоточности: Thread, Executors, volatile, synchronized. Если хотите повторить основы, пройдите это бесплатное предобучение
  • Умеете писать веб-сервисы на Spring, делать запросы в базу данных и писать юнит-тесты
  • Знание git
Что будем делать
  • Подробно разбирать каждый класс java.util.concurrent: плюсы, минусы, лучшие практики
  • Изучать, как всё работает «под капотом»
  • Подсматривать интересные приёмы в популярных проектах
  • Искать ошибки и возможные проблемы в коде реального проекта
  • Сравнивать реализации между собой
  • Измерять производительность в разных условиях
  • Разбирать вопросы с собеседований

Также затронем:
  • Флажки JVM, связанные с многопоточностью
  • Что и как тестировать
  • Реактивные библиотеки
  • Виртуальные потоки
Чего не будет
  • Алгоритмы
  • Теория параллельных вычислений
  • Распределённые вычисления и транзакции
  • Детальное изучение реактивного подхода
Структура урока
Теория
Лекция на 10-20 минут

Дополнительные материалы

Тесты для проверки знаний
Вопросы с собеседований
Практика
Сначала тренируемся на простых примерах

Потом разбираем многопоточный код Spring, Kafka, Hadoop и т.д. Ищем ошибки и подсматриваем приёмчики

А ещё пишем код:
⭐️ Проверяем встроенными юнит- и нагрузочными тестами
⭐️ Проверяем себя по списку популярных ошибок
⭐️ Сравниваем решение с образцом и читаем статью с разбором нюансов
Программа курса
На изучение материалов и выполнение домашних заданий понадобится 3-8 часов в неделю.
Модуль 1
Модуль 1
Фундамент
Как оптимально подружить поток в JVM и ОС
Что смотреть в thread dump
В чём суть модели памяти, как её учитывать при разработке
Модуль 2
Модуль 2
Асинхронные задачи
Паттерны организации задач
Когда применять Executors, а когда не стоит
Как подобрать параметры под разные профили нагрузки
CompletableFuture: как получить максимальную выгоду
Виртуальные потоки: принцип работы и Project Loom
Бонус: корутины в Kotlin
Модули 3 и 4
Модули 3 и 4
Взаимодействие потоков
Паттерны взаимодействия потоков
Эксклюзивный доступ к коду: synchronized, Lock, Semaphore
Работа с общими переменными: volatile, классы Atomic*
Когда использовать и чем заменить ThreadLocal
Чем отличаются многопоточные коллекции и как выбрать подходящую
Как правильно синхронизировать потоки в коде и тестах
Сравнение производительности всех инструментов
Как найти и предотвратить дедлоки
Функциональный стиль и неизменяемые переменные
Лабораторная работа по измерению производительности
Модуль 5
Модуль 5
Обработка данных
Как и за счёт чего работает ForkJoinPool
Как адаптировать почти любую задачу под ForkJoinPool
Использование в энтерпрайзных задачах
Модуль 6
Модуль 6
Потоки данных
Паттерны по работе с данными
Очереди: чем отличаются друг от друга, как выбрать подходящую и решить возможные проблемы
Реактивное программирование: принцип работы и обзор библиотек
Модуль 7
Модуль 7
Другие важные темы
Как тестировать многопоточные приложения в энтерпрайзе
Как протестировать код под нагрузкой в домашних условиях
Какие метрики снимать, и как это сделать
Задачи с собеседований и тестовые задания с многопоточкой
Рекомендации для дальнейшего изучения
Записаться на курс
Оплата за счёт компании (только РФ, не Иннотех)
Оплата зарубежными картами, рассрочки
Если вы хотите оплатить курс от юридического лица, напишите на diana@fillthegaps.ru. Условия для юридических лиц
Всё есть! Нужные кнопки будут доступны при оплате
Отзывы🥰
(листайте вправо-влево)
Часто задаваемые вопросы
ИП Яковлева Диана Александровна
ИНН 781147324623 ОГРНИП 321784700159099
Политика конфиденциальностиДоговор-оферта

Контакты:
Телеграм
email: diana@fillthegaps.ru