JavaRush
Акція
Університет
Java FullStack
Python FullStack
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