JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Deadlock: причины, примеры, устранение

    JAVA 25 SELF
    53 уровень,0 лекция
    В лекции разбираем, что такое взаимная блокировка потоков (deadlock) в Java, почему она происходит и какие четыре условия для этого нужны. На практическом примере с synchronized показываем воспроизведение проблемы, затем изучаем стратегии профилактики: единый порядок захвата ресурсов, использование ReentrantLock.tryLock с таймаутом, сокращение критических секций и отказ от лишних вложенных блокировок. Покажем диагностику через Thread Dump и jstack, как распознать состояния BLOCKED/ WAITING, и завершим чек-листом и типичными ошибками.
    Открыта
  • Livelock и Starvation: определение, примеры

    JAVA 25 SELF
    53 уровень,1 лекция
    Разбираем конкурентные аномалии Livelock и Starvation: чем они отличаются от Deadlock, как выглядят в коде и в логах. Показаны примеры на Java: «вежливые работники» (ожившая блокировка) и голодание по приоритетам и из‑за несправедливых блокировок. Учимся обнаруживать проблему (логирование, Thread dump, VisualVM, Java Mission Control) и предотвращать её: случайные задержки перед повторной попыткой ( Thread.sleep), неблокирующие алгоритмы, справедливые блокировки через ReentrantLock с флагом fairness ( new ReentrantLock(true)), аккуратные критические секции и отказ от злоупотребления setPriority() и synchronized.
    Открыта
  • Thread-safe коллекции: ConcurrentHashMap и другие

    JAVA 25 SELF
    53 уровень,2 лекция
    В этой лекции разберём, почему обычные коллекции ( ArrayList, HashMap) опасны в многопоточной среде, и какие потокобезопасные альтернативы предлагает пакет java.util.concurrent: ConcurrentHashMap, CopyOnWriteArrayList, ConcurrentLinkedQueue, структуры на skip-list и BlockingQueue. Обсудим атомарные операции вроде merge, putIfAbsent, computeIfAbsent, сравним с Collections.synchronizedMap, рассмотрим практические примеры и типичные ошибки (слабоконсистентные итераторы, неатомарные последовательности операций и др.).
    Открыта
  • AtomicInteger, AtomicReference: атомарные операции

    JAVA 25 SELF
    53 уровень,3 лекция
    Почему инкремент i ++ не работает в многопоточности, что такое атомарные операции и как их даёт пакет java.util.concurrent.atomic. Разбираем AtomicInteger и AtomicReference, методы incrementAndGet(), compareAndSet(...), внутренний механизм CAS (Compare-And-Swap), а также когда лучше выбрать synchronized и когда — LongAdder. В конце — типичные ошибки: сложные операции, ABA и потокобезопасность вложенных объектов.
    Открыта
  • Диагностика и отладка многопоточных программ

    JAVA 25 SELF
    53 уровень,4 лекция
    Как снимать и читать Thread Dump с помощью jstack, VisualVM и IDE, распознавать состояния потоков ( RUNNABLE, BLOCKED, WAITING) и находить взаимные блокировки. Разберём мониторинг потоков в Java Mission Control и Java Flight Recorder, практики логирования (имена потоков, вход/выход из synchronized), минимизацию блокировок, тестирование конкурентности с CountDownLatch и разбор реального deadlock-кейса. В финале — типичные ошибки и как их избежать.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush