1. С новым годом
    Скрыть объявление
  2. 10% кешбек на покупки
Скрыть объявление

Если у вас возникают проблемы с пополнением баланса по карте, то пробуйте через СБП . Он еще и выгоднее (без комиссии банка).


СБП - это система быстрых платежей - перевод по номеру телефона без комиссии

Скрыть объявление

Если у Вас проблемы с пополнением баланса, то попробуйте отключить VPN и воспользоваться этим Сайтом

Скрыть объявление

Мы обновили Telegram-бот!

Ссылку на новый бот и все детали ищите ТУТ и скорее подписывайтесь, чтобы не пропускать важные уведомления и новости форума

Скрыть объявление

На короткое время рассказываем где достать редкие курсы

Подробности ТУТ

Скрыть объявление

Было ли у Вас такое, что Вы не могли найти курс? Если да, то напишите нам в Службу поддержки какой курс вам нужен и мы постараемся его найти.

Скрыть объявление

Пополняйте баланс и получайте при оплате складчин кэшбек в размере 10%

Запись

[Sorokin School] Многопоточность в Java. Тариф Стандарт (Павел Сорокин)

Тема в разделе "Курсы по программированию"

Цена:
9990 руб
Взнос:
544 руб
Организатор:
Евражкa

Список участников складчины:

1. Евражкa
open
2
Записаться
  1. Евражкa Организатор складчин

    [Sorokin School] Многопоточность в Java. Тариф Стандарт (Павел Сорокин)

    [​IMG]

    Разберись в потоках от фундамента до production-кода. Будешь спокойно писать многопоточные приложения, проходить собесы на middle+ без страха и сможешь претендовать на вакансии с зарплатой в 2 раза выше.

    Для кого этот курс:


    Новичок, знающий только базу по Java и Spring
    • Сейчас самое время освоить многопоточность. Гораздо проще разобраться с ней на старте карьеры, чем потом догонять под давлением боевых задач.
    Junior/Middle Java-разработчик
    • Умеешь писать REST API, работаешь с базами данных, но многопоточность остаётся белым пятном и это мешает браться за самые интересные проекты
    Хочешь качать харды
    • Тебе важно становиться сильнее как кодер и расти по ЗП с помощью хардов, а не самопрезентаций и легенд
    Программа:

    Модуль 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, проектировать очередь задач и использовать виртуальные потоки там, где они дают выигрыш
    Бонусы курса:

    Чек‑лист «20 ошибок в многопоточности»
    • PDF с разбором типичных ошибок, которые встречаются даже у опытных разработчиков.
      • Ошибка: использование HashMap в многопоточности
        Решение: ConcurrentHashMap
      • Ошибка: блокировка под synchronized на длинные операции
        Решение: выносить блокировку на минимум
      • Ошибка: забыли про volatile при доступе из разных потоков
        Решение: понимание visibility
    • И ещё 17 реальных примеров с объяснением, как чинить
    • Используй как шпаргалку для код‑ревью. Особенно полезно перед собеседованиями — многие задачи ровно про это.
    Видео — топ‑10 вопросов на собесе
    • Формат: «Как отвечать на вопросы про потоки, чтобы звучать как увереный middle+».
      • Реальные вопросы с собесов
      • Как объяснять сложные темы простым языком
      • Какие примеры приводить, чтобы выглядеть убедительно
      • Как вести себя, если не знаешь ответа (спойлер: это нормально)
      • Разбор типичных «ловушек» в вопросах интервьюеров
    • Это как репетиция интервью — после просмотра ты будешь звучать уверенно.
    Автор Паша Сорокин (S0R0KlN) — Java backend-разработчик и контент-мейкер, ведущий YouTube-канал и Telegram-канал об IT. Он специализируется на Java-разработке, микросервисах, а также проводит mock-собеседования для помощи в трудоустройстве

    Тариф Стандарт
    • 4 модуля курса (15 часов видео)
    • 4 практические домашки (от простых к продакшн-кейсу)
    • Реальный проект для портфолио — обработчик очереди задач
    • Чек-лист «20 ошибок в многопоточности»
    • Видео-разбор топовых вопросов на собесах
    • Подарочный мини-курс "15 лайфкодинг задач с собесов"
    Скрытый текст. Доступен только зарегистрированным пользователям.Нажмите, чтобы раскрыть...
     
  2. Похожие складчины
    Загрузка...
Наверх