← Все навыки

Java. Многопоточность

От основ потокобезопасности до virtual threads и реактивного программирования — корректный и масштабируемый конкурентный код для продакшена и собеседований Middle+/Senior

6 модулей, 35 тем Middle / Senior Virtual Threads (Java 21+) Индивидуально с ментором
Открытый демоурок

«Почему поток не видит чужих изменений»

Целый урок курса с практикой и квизом — открыт всем, записываться и платить не нужно. Посмотрите, как устроены материалы, прежде чем начинать.

Пройти демоурок

Для кого этот навык

  • Java-разработчики, которые хотят писать корректный многопоточный код, а не «надеяться, что пронесёт»
  • Разработчики, готовящиеся к секции concurrency на собеседовании Middle / Senior
  • Все, кто сталкивался с плавающими багами: race condition, deadlock, нарушение видимости

Программа

Основы и потокобезопасность

Потоки, synchronized, видимость, безопасная публикация
  • Потоки и их жизненный цикл: Thread.State и переключение контекста
  • Потокобезопасность: synchronized, мониторы, атомарность
  • Совместное использование и безопасная публикация объектов, immutability
  • Проектирование потокобезопасных классов

Конкурентные коллекции и синхронизаторы

ConcurrentHashMap, BlockingQueue, Semaphore, CountDownLatch
  • ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue
  • Паттерн producer-consumer
  • Синхронизаторы: Semaphore, CountDownLatch, CyclicBarrier, Phaser, Exchanger

Выполнение задач и пулы потоков

Executor, Future, CompletableFuture, ThreadPoolExecutor
  • Поток как примитив: создание, запуск, прерывание, Thread против Runnable
  • Executor, Future, Callable, CompletableFuture: композиция и обработка исключений
  • ThreadPoolExecutor: размер пула, очереди, политики насыщения
  • Корректное завершение пула и backpressure

Живучесть, производительность, тестирование

Deadlock, race condition, закон Амдала, тесты concurrency
  • Угрозы живучести: deadlock, livelock, starvation, thread dumps
  • Производительность и масштабируемость: закон Амдала, lock contention, splitting/striping
  • Тестирование параллельных программ на корректность и производительность

Продвинутые темы

ForkJoinPool, JMM, virtual threads, Project Reactor
  • ForkJoinPool и work-stealing
  • Java Memory Model: happens-before, reordering, volatile, double-checked locking
  • Virtual threads (Java 21+): carrier threads, pinning, structured concurrency
  • Основы реактивного программирования (Project Reactor): Mono, Flux, backpressure

Дополнительно

AtomicReference, real-world кейсы и вопросы с собеседований
  • Дополнительная глава: AtomicReference
  • Real-world примеры конкурентного кода
  • Разбор живого сервиса screener-fetcher: конвейер producer-consumer с фазовым запуском, почему в каждой точке выбран именно этот примитив
  • Вопросы с собеседований по темам курса

Практика

В основных модулях квиз идёт после каждой лекции, плюс отдельные задания: реализуете код, ловите баги инструментами и проходите код-ревью с ментором

  • Потокобезопасные счётчики: synchronized, ReentrantLock, AtomicInteger, LongAdder
  • BoundedBuffer / producer-consumer на BlockingQueue, потокобезопасный кэш
  • Синхронизаторы: пул соединений на Semaphore, многофазная обработка через CyclicBarrier/Phaser
  • Асинхронные цепочки на CompletableFuture с обработкой исключений и тайм-аутов
  • Воспроизведение и устранение deadlock / livelock / race condition
  • Параллельные вычисления на ForkJoinPool
  • Virtual threads с симуляцией I/O и pinning, реактивный конвейер на Project Reactor