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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Pattern 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. Покажем простой пример c 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
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush