← Все навыки

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

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

java.util.concurrent Virtual Threads (Java 21+) Индивидуально с ментором

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

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

Программа

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

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

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

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

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

Executor, Future, CompletableFuture, ThreadPoolExecutor
  • Executor, Future, 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

Практика

Реализуете код, ловите баги через инструменты и проходите код-ревью с ментором

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