JavaRush
AI Academy
new
Акція
Університет
Java FullStack
Python FullStack
AI Native Developer
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Race condition і складені операції над спільним станом

    Kotlin SELF
    55 рівень, 0 лекція
    Розбираємося, чому гонки можливі й у корутинах: конкурентне виконання на Dispatchers . Default, проблеми shared mutable state, складені операції на кшталт counter ++ і пастка check-then-act. Вчимося формулювати інваріанти (наприклад, tickets >= 0), виділяти критичні секції, а також будуємо навчальний полігон TicketOffice для наступних лекцій.
    Відкрита
  • Mutex.withLock: коректна критична секція

    Kotlin SELF
    55 рівень, 1 лекція
    Розбираємо, навіщо корутинам потрібен Mutex і як правильно виділяти критичну секцію через withLock: захищаємо не «змінну», а інваріант, тримаємо замок мінімально можливий час, уникаємо антипатерна runBlocking усередині допоміжних функцій і будуємо потокобезпечний реєстр витрат ( ExpenseLedger) із безпечним читанням через snapshot().
    Відкрита
  • AtomicInteger і AtomicReference: атомарні операції та межі застосовності

    Kotlin SELF
    55 рівень, 2 лекція
    Розбираємо атомарні типи з java.util.concurrent.atomic у Kotlin/JVM: як AtomicInteger робить інкремент безпечним без Mutex, чому звʼязка get() → set() не «склеюється» в атомарність, як працює CAS через compareAndSet і чому AtomicReference<T> майже завжди варто поєднувати з незмінюваним станом (через copy()). Наприкінці — мапа вибору інструмента й типові помилки.
    Відкрита
  • Confinement і actor через Channel: один власник стану

    Kotlin SELF
    55 рівень, 3 лекція
    Розбираємо підхід confinement у корутинах: як прибрати гонки «за конструкцією», коли змінюваний стан належить одному власнику, а всі інші спілкуються з ним через повідомлення. На практиці будуємо actor на основі Channel: мінімальний лічильник без Mutex, типізований протокол команд через sealed class, кілька відправників, запит/відповідь через SendChannel, правила коректного завершення ( Stop vs close()) і набір типових помилок.
    Відкрита
  • Deadlock, livelock і starvation: як вони виникають та як не потрапити в пастку

    Kotlin SELF
    55 рівень, 4 лекція
    Розбираємо три «антипрогреси» в конкурентному коді на Kotlin-корутинах: deadlock (взаємне очікування), livelock (активна метушня без результату) і starvation (голодування задач). На прикладах із Mutex, withLock і tryLock() показуємо, як помилки народжуються через порядок захоплення, надто довгі критичні секції та «ввічливі» повторні спроби. А далі закріплюємо це правилами: єдиний порядок за id, короткий withLock, бекоф і (коли можливо) перехід до дизайну confinement/ actor.
    Відкрита
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush