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

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Патерн Observer («Спостерігач»)

    JAVA 25 SELF
    50 рівень, 3 лекція
    Поведінковий патерн «Спостерігач»: ролі Subject і Observer, підписка/відписка через addObserver/ removeObserver, і розсилка сповіщень методом notifyObservers. Розбираємо зв’язок із подійною моделлю Java: button. addActionListener( listener) ; → виклик actionPerformed(). Практика на прикладах (термометр і кондиціонер, міні‑лічильник і лямбди), чому java.util.Observable/ Observer застаріли, а також які є сучасні підходи.
    Відкрита
  • Потік EDT і тривалі операції в UI

    JAVA 25 SELF
    50 рівень, 4 лекція
    У цій лекції розберемося, що таке потік обробки подій UI — EDT у Swing та його аналог JavaFX Application Thread, чому компоненти інтерфейсу не є потокобезпечними і через що «підвисає» вікно під час важких завдань. Покажемо правильні прийоми: винесення обчислень у фоновий потік за допомогою new Thread(...), оновлення інтерфейсу викликами SwingUtilities.invokeLater і Platform.runLater, а також використання високорівневих інструментів SwingWorker<T, V> і Task<V>/ Service<V> для відстеження прогресу, скасування та обробки помилок.
    Відкрита
  • Вступ до багатопотоковості: навіщо вона потрібна

    JAVA 25 SELF
    51 рівень, 0 лекція
    Навіщо програмам потрібні потоки та паралельність: від чутливого інтерфейсу до завантаження всіх ядер процесора. Розберемо різницю між процесами та потоками, роль головного потоку main у JVM, практичні кейси (UI, сервери, обробка файлів) і ризики: race condition, deadlock, а також базові інструменти синхронізації на кшталт synchronized. Покажемо простий приклад із Thread і запуском двох завдань паралельно.
    Відкрита
  • Запуск потоків: Thread і Runnable, синтаксис

    JAVA 25 SELF
    51 рівень, 1 лекція
    У цій лекції розберемо запуск потоків у Java: познайомимося з класом Thread та інтерфейсом Runnable, навчимося правильно викликати start() і не плутати його з run(), використаємо анонімні класи та лямбда-вирази, запустимо кілька потоків і розглянемо їхній життєвий цикл ( NEW → RUNNABLE → TERMINATED). Також поговоримо про методи Thread.currentThread(), getName(), очікування через join() і типові помилки на кшталт IllegalThreadStateException.
    Відкрита
  • Стани та життєвий цикл потоку

    JAVA 25 SELF
    51 рівень, 2 лекція
    Розбираємо життєвий цикл потоку у Java: від Thread.State (
    NEW
    ,
    RUNNABLE
    ,
    BLOCKED
    ,
    WAITING
    ,
    TIMED_WAITING
    ,
    TERMINATED
    ) та переходів між ними. Навчаємося керувати потоками за допомогою Thread.sleep(...), join(), interrupt(), діагностувати стан через isAlive() і getState(), а також уникати застарілих методів на кшталт stop()/ suspend()/ resume(). Наприкінці — практичні поради та типові помилки.
    Відкрита
  • Параметри та пріоритети потоків

    JAVA 25 SELF
    51 рівень, 3 лекція
    Як безпечно передавати параметри в потоки через конструктор класу, що реалізує Runnable, коли доречні лямбда-вирази, і чому поля краще робити final. Розбираємо пріоритети потоків: методи setPriority/ getPriority, константи Thread.MIN_PRIORITY, Thread.NORM_PRIORITY, Thread.MAX_PRIORITY і їхній вплив на планувальник. Плюс — іменування потоків через конструктор, setName/ getName, практичний приклад і типові помилки (спільний Runnable, сеттери, сподівання на пріоритети).
    Відкрита
  • Стан гонки (race condition)

    JAVA 25 SELF
    51 рівень, 4 лекція
    У лекції розбираємо, що таке стан гонки: коли кілька потоків одночасно звертаються до спільних даних, а результат залежить від порядку планування. На прикладі інкременту counter ++ показуємо, чому операція не атомарна і як втрачаються інкременти. Розбираємо практичний кейс із банківським рахунком, наслідки у продакшені та підходи до захисту: synchronized, атомарні типи з java.util.concurrent.atomic (наприклад, AtomicInteger), а також незмінність. Завершуємо розділом «Типові помилки», де пояснюється, чому Thread-баги рідко виявляються під час тестування і чому «лікувати» їх Thread. sleep( 1) безглуздо.
    Відкрита
  • Спільні ресурси та синхронізація: проблеми доступу

    JAVA 25 SELF
    52 рівень, 0 лекція
    Ця лекція про те, що таке спільний ресурс у багатопотокових застосунках, чому виникають стани гонки (race condition) і «втрачені оновлення», а також як захистити дані за допомогою synchronized. Розберемо базові прийоми синхронізації (методи та блоки), поговоримо про сучасні інструменти з java.util.concurrent ( Lock, ReentrantLock, Semaphore тощо), побачимо практичні приклади з інкрементом лічильника та типові помилки (неатомарність i ++, неправильний об’єкт блокування, міфи про volatile).
    Відкрита
  • synchronized, volatile: синтаксис, застосування

    JAVA 25 SELF
    52 рівень, 1 лекція
    Практична лекція з багатопоточності: розбираємося, як працює ключове слово synchronized (блоки й методи, монітор об’єкта та блокування на рівні класу ClassName.class), чим відрізняється видимість змін через volatile від атомарності операцій, чому boolean-прапорці зручно робити volatile, а інкремент count ++ потребує синхронізації. Зіставимо, коли обирати synchronized, а коли — volatile, і розберемо типові помилки.
    Відкрита
  • ReentrantLock і ReadWriteLock: відмінності, приклади

    JAVA 25 SELF
    52 рівень, 2 лекція
    Практичне порівняння класичної синхронізації через synchronized із більш гнучкими примітивами з пакета java.util.concurrent.locks: ReentrantLock і ReadWriteLock. Розберемо, як явно керувати блокуваннями ( lock()/ unlock(), tryLock() з тайм-аутом), як масштабувати читання за допомогою ReentrantReadWriteLock, що таке «чесність» ( fair mode), де кожен інструмент доречний і які помилки трапляються найчастіше.
    Відкрита
  • М’ютекси й семафори: синтаксис і задачі

    JAVA 25 SELF
    52 рівень, 3 лекція
    У цій лекції розглянемо ключові примітиви синхронізації в Java: як захищати критичні секції за допомогою synchronized і класу ReentrantLock (методи lock()/ unlock(), конструкція try- finally), а також як обмежувати паралелізм через Semaphore (методи acquire()/ release()). Порівняємо м’ютекс і семафор у таблиці, розглянемо практичні кейси (банк, сервер із лімітом підключень) і типові помилки, що призводять до deadlock і втрати продуктивності.
    Відкрита
  • Розбір типових помилок під час синхронізації

    JAVA 25 SELF
    52 рівень, 4 лекція
    Практичний розбір поширених помилок багатопоточності в Java: забутий unlock()/ release() у ReentrantLock і Semaphore (вирішується за допомогою try- finally), вибір неправильного монітора для synchronized, взаємні блокування (deadlock) і порядок захоплення блокувань, надмірна синхронізація, а також межі застосування volatile і заміна на AtomicInteger. Приклади, поради та зрозумілі аналогії — щоб код не зависав.
    Відкрита
  • 1
  • ...
  • 22
  • 23
  • 24
  • 25
  • 26
  • ...
  • 57
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush