Главная > Фильмы > Павел Сорокин - Многопоточность в Java (Тариф Стандарт) (2026) Видеокурс
Павел Сорокин - Многопоточность в Java (Тариф Стандарт) (2026) Видеокурс8-03-2026, 20:31. Разместил: colt |
![]() Будешь спокойно писать многопоточные приложения, проходить собесы на middle+ без страха и сможешь претендовать на вакансии с зарплатой в 2 раза выше. Программа: Модуль 1. Открываем капот: потоки, процессы, Threads API, JVM, Daemon, Synchronized, Volatile Зачем нужна многопоточность: где однопоточность «держит» систему; эффект очередей и блокирующих операций Поток как единица исполнения в общей памяти процесса: общий heap, stack у каждого потока Program ? Process ? Thread: от запуска программы до выполнения кода в потоке Планировщик ОС: очереди Ready/Waiting/Blocked; RUNNABLE ? RUNNING; стоимость переключений контекста; недетерминизм порядка Базовый Thread API: Thread/Runnable; start vs run; join; sleep (TIMED_WAITING); interrupt и восстановление флага; наблюдение состояний (getState) Daemon vs User: определение, назначение, условия завершения JVM, риски использования демонов для бизнес?логики Введение в синхронизацию: race condition; mutex/критическая секция; synchronized; volatile; Результат: Поймёшь, как устроены процессы и потоки в JVM и ОС, где у них общая и изолированная память Сможешь уверенно создавать и управлять потоками: запуск, ожидание, усыпление, корректная остановка. Научишься объяснять работу планировщика, очереди Ready/Waiting/Blocked и почему порядок выполнения непредсказуем Будешь различать user? и daemon?потоки и поймёшь, когда и почему JVM завершает работу. Освоишь базу синхронизации: зачем нужен mutex, когда использовать synchronized, а когда volatile (видимость) Модуль 2. Укрощаем хаос: JMM, Reordering, ReentrantLock, Semaphore, Deadlock, Livelock Java Memory Model (JMM): program order, happens?before, основные HB?рёбра (unlock?lock, volatile write?read, start/join). Reordering: где возможен (компилятор/JIT/CPU) и почему без HB порядок не гарантирован; volatile — видимость/порядок, но не атомарность Межпоточная сигнализация: монитор, очереди EntryList/WaitList, wait/notify/notifyAll, spurious wakeups и правило while; тайм?ауты ожидания. ReentrantLock и Condition: re?entry, lockInterruptibly (), tryLock (timeout), await/signal, несколько условий ожидания. Semaphore: permits, ограничение параллелизма, fair/non?fair режимы. ReadWriteLock: совместимость читателей, эксклюзивный писатель, отсутствие безопасного апгрейда read?write, starvation и fair?режим. CountDownLatch: одноразовый барьер N?0, await (timeout), сценарии start?gate/completion?gate. Атомики и CAS: Atomic*, CAS?цикл, конфликты и спины, ABA и AtomicStampedReference. Deadlock: как обнаружить, условия Коффмана, «обедающие философы», порядок локов, tryLock (timeout) + откат. Livelock: «уступчивые» симметричные протоколы, разрыв симметрии (backoff/приоритет). ThreadLocal: внутренняя модель (ThreadLocalMap), кейсы применения, утечки в пулах и best?practices Практика: собственная ArrayBlockingQueue на synchronized + wait/notify, продюсеры/консюмеры, проверка корректности. Результат: Узнаешь, как Java гарантирует видимость и порядок между потоками (Java Memory Model, happens?before, reordering). Получишь набор практических приёмов межпоточной сигнализации (wait/notify/notifyAll) и научится избегать типовых багов (потерянные сигналы, ложные пробуждения). Сможешь осознанно выбирать примитив синхронизации (ReentrantLock/Condition, Semaphore, ReadWriteLock, CountDownLatch) под задачу и использовать тайм?ауты/прерывание для выхода из вечного ожидания. Научишься применять атомики и CAS, объяснять ABA?проблему и её фиксы. Сможешь воспроизводить и устранять deadlock и livelock (включая «уступчивый» сценарий), работать с ThreadLocal без утечек и реализовать безопасную блокирующую очередь Модуль 3. Продвинутые средства: ExecutorService, CompletableFuture, Concurrent Collections, Virtual Threads I/O-bound vs CPU-bound: задачи, ограниченные скоростью операций ввода-вывода, и задачи, ограниченные вычислительными ресурсами; определения, метрики и стратегия выбора пула потоков. ExecutorService и разновидности ThreadPoolExecutor: FixedThreadPool, CachedThreadPool, ScheduledThreadPool и SingleThreadExecutor; работа очереди задач, рабочих потоков и механизмы завершения пула. ForkJoinPool: модель work-stealing (распределения задач с кражей работы), использование классов RecursiveTask и RecursiveAction; общий ForkJoinPool для параллельных потоков (parallel streams) и пул по умолчанию для CompletableFuture. Parallel Streams: когда применение оправдано, влияние числа доступных процессорных ядер (Runtime.getRuntime ().availableProcessors ()), и почему такие потоки не подходят для сценариев с интенсивным вводом-выводом. Асинхронная модель: интерфейсы Runnable, Callable и Future; жизненный цикл Future; использование CompletableFuture, основные операторы, обработка ошибок и таймауты. Потокобезопасные коллекции: ConcurrentHashMap, CopyOnWriteArrayList, ArrayBlockingQueue и LinkedBlockingQueue (массив против связного ccc, примеры проблем при использовании обычных HashMap и ArrayList в многопоточности. Virtual Threads: создание через Thread.ofVirtual ().start () и Executors.newVirtualThreadPerTaskExecutor (); как JVM сопоставляет виртуальных и системных потоков (N к M), механизмы монтирования и размонтирования, сравнение с потоками операционной системы и ограничения в java-21 Результат: Поймёшь разницу между IO?bound и CPU?bound задачами и научишься выбирать модель выполнения под профиль нагрузки (ThreadPoolExecutor vs ForkJoinPool vs Virtual Threads) Сможешь безопасно работать с пулами потоков: конфигурация, отправка задач, корректное завершение (shutdown/awaitTermination), анти?паттерны ожидания на get/join без нужды Освоит Runnable/Callable/Future и построение неблокирующих цепочек на CompletableFuture (thenApply/thenCompose/thenCombine/allOf/anyOf, обработка ошибок exceptionally/handle) Разберёшь устройство и гарантии популярных конкурентных коллекций (ConcurrentHashMap, CopyOnWriteArrayList, ArrayBlockingQueue, LinkedBlockingQueue) и применишь их вместо небезопасных аналогов под конкуренцией. Поймёшь, как устроены Virtual Threads (Loom): mapping на carrier?потоки, mount/unmount стека, где они выигрывают, а где нет; увидит практические ограничения (thread pinning, тяжёлые ThreadLocal). Сможешь сравнить выполнение на обычных пулах и на VT на типичных I/O?сценариях (десятки тысяч задач) и сделать обоснованный выбор Модуль 4. Боевое крещение: реальный production-case проект Thread-per-Request в Tomcat — классическая модель, где каждому запросу выделяется поток. Покажем, где у неё пределы и как это влияет на масштабирование Event-loop и WebFlux / Netty — неблокирующая архитектура, где один поток обслуживает тысячи соединений. Virtual Threads (Java 21+) — новая эпоха Java-параллелизма. Подключим виртуальные потоки в Spring Boot и покажем, как убрать боль реактивщины без потери производительности I/O-bound и CPU-bound, закон Амдала — объясняем, почему многопоточность не всегда ускоряет, и как найти оптимальный баланс Rate-limiters и HikariCP — где рождаются «бутылочные горлышки» в реальных прод-сервисах и как их диагностировать и предотвратить План деградации и изоляция ресурсов — как защитить систему, если одно из API начинает тормозить Финальный прод-кейс — очередь задач, асинхронный раннер, три внешних API (Stock, Pricing, Shipping), статусы NEW ? IN PROGRESS ? DONE/FAILED. Реальный сценарий с архитектурой, близкой к продакшену. Результат: Поймёшь, как Spring Boot и Tomcat обрабатывают параллельные запросы (модель thread-per-request) Увидишь воочию контраст с event-loop/WebFlux Разберёшься в типовых узких местах (очереди, пулы, лимиты) и применишь эти знания в практике Реализуешь production-like асинхронный обработчик заказов с ретраями и агрегацией результатов На выходе будешь уметь диагностировать bottleneck, проектировать очередь задач и использовать виртуальные потоки там, где они дают выигрыш Автор Паша Сорокин (S0R0KlN) — Java backend-разработчик и контент-мейкер, ведущий YouTube-канал и Telegram-канал об IT. Он специализируется на Java-разработке, микросервисах, а также проводит mock-собеседования для помощи в трудоустройстве Информация о видео Название: Многопоточность в Java (Тариф Стандарт) Автор: Павел Сорокин Год выхода: 2026 Жанр: Видеокурс Язык: Русский Выпущено: Россия Продолжительность: долго Файл Формат: MP4 Видео: AVC, 1920x1080, ~550 Kbps Аудио: AAC, 128 Kbps, 48.0 KHz Размер файла: 8 Gb Скачать Павел Сорокин - Многопоточность в Java (Тариф Стандарт) (2026) Видеокурс Вернуться назад |