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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Scoped Values и новые механики потоков (Java 21+)

    JAVA 25 SELF
    57 уровень,4 лекция
    Разбираем, почему классический ThreadLocal теряет актуальность в мире виртуальных потоков, и как ему на смену приходит ScopedValue: контекст, привязанный к области выполнения, а не к потоку. Пошаговые примеры передачи контекста (пользователь, REQUEST_ID), вложенные scopes и их перекрытие, интеграция с виртуальными потоками ( Executors. newVirtualThreadPerTaskExecutor()). Обсуждаем сравнение ThreadLocal vs ScopedValue, практические советы, ограничения и взгляд на Structured Concurrency (preview).
    Открыта
  • Structured Concurrency

    JAVA 25 SELF
    58 уровень,0 лекция
    Structured Concurrency превращает хаотичный набор потоков в управляемую иерархию задач: вы запускаете подзадачи в виртуальных потоках внутри StructuredTaskScope, дожидаетесь их через join(), централизованно обрабатываете ошибки throwIfFailed() и получаете результаты resultNow()/ result(). Разберём политики завершения ShutdownOnFailure и ShutdownOnSuccess, сравним с CompletableFuture, посмотрим примеры агрегатора HTTP и типичные ошибки при использовании структурированной конкурентности.
    Открыта
  • Отмена задач и тайм‑ауты сквозь стек

    JAVA 25 SELF
    58 уровень,1 лекция
    Как корректно отменять долгие и блокирующие операции в Java: кооперативное прерывание через Thread.interrupt(), отмена задач через Future.cancel() и поведение CancellationException, тайм‑ауты и отмена в CompletableFuture ( orTimeout, completeOnTimeout), структурированная конкуррентность с StructuredTaskScope, общий дедлайн (time‑budget) и проброс тайм‑аутов вниз по стеку (включая Instant/ Duration и Scoped Values). Разбираем практику работы с блокирующим IO и типичные ошибки.
    Открыта
  • Синхронизаторы высокого уровня

    JAVA 25 SELF
    58 уровень,2 лекция
    В лекции разбираем высокоуровневые синхронизаторы из java.util.concurrent: CountDownLatch, CyclicBarrier, Phaser и Exchanger. Учимся координировать запуск и завершение задач через await()/ countDown(), строить многоразовые фазы и барьерные действия с await(), управлять динамическими участниками «оркестра» с register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() и обмениваться данными попарно через exchange(). На практике реализуем массовый старт воркеров и «игровой тик», а также разберём типичные ошибки: одноразовость CountDownLatch, обработку BrokenBarrierException и корректный deregister(). Везде обходимся без боли от wait()/ notify().
    Открыта
  • StampedLock и низкоспорные счётчики

    JAVA 25 SELF
    58 уровень,3 лекция
    Когда ReentrantReadWriteLock и классический ReadWriteLock начинают буксовать под высокой нагрузкой, на помощь приходит StampedLock с оптимистичным чтением: связка tryOptimisticRead + validate даёт почти «бесплатные» чтения при редких записях. Разберём режимы блокировок, работу со штампами, ограничения по reentrancy, сравним с ReentrantReadWriteLock, а также посмотрим на низкоспорные счётчики — LongAdder и LongAccumulator — и почему они обгоняют AtomicLong под конкуренцией. Завершим практикой: кэш с преобладающим чтением и мини-бенчмарком.
    Открыта
  • Java Memory Model (JMM)

    JAVA 25 SELF
    58 уровень,4 лекция
    Разбираем правила видимости и упорядочивания операций в Java Memory Model: что означает отношение happens-before, как и когда помогают volatile, synchronized, финальные поля ( final), и почему без них возникают «несвежие» данные. Покажем безопасную публикацию объектов, корректный double-checked locking, низкоуровневый доступ через VarHandle, влияние ложного разделения и аннотацию @Contended, а также практические замечания про Thread.start()/ Thread.join(), Future.get() и микробенчмарки JMH.
    Открыта
  • Многопоточное чтение и запись файлов

    JAVA 25 SELF
    59 уровень,0 лекция
    Практическое пособие по параллельной работе с файлами в Java: когда многопоточность действительно ускоряет IO и когда нет, выбор инструментов — Thread, пул потоков через ExecutorService, асинхронность с CompletableFuture и параллельные стримы — а также чтение больших файлов по кускам через FileChannel, безопасная запись в общий лог и ограничения ОС/ФС. Разбираем шаблоны запуска задач, настройки пулов, методы shutdown()/ awaitTermination() и типичные ошибки.
    Открыта
  • Параллельная обработка файлов: ForkJoin, Parallel Streams

    JAVA 25 SELF
    59 уровень,1 лекция
    Практическое руководство по распараллеливанию файловых задач в Java: как включить параллельность в Stream API методом parallel()/ parallelStream(), как работает и настраивается ForkJoinPool и когда лучше использовать RecursiveTask. Обсудим, где параллельность действительно ускоряет I/O, как управлять общим пулом потоков, и как безопасно закрывать ресурсы ( try-with-resources). В финале — быстрый взгляд на позиционный доступ через FileChannel для чтения/записи частей больших файлов.
    Открыта
  • Параллельные обходы ФС: Files.walk + parallel() и ForkJoin

    JAVA 25 SELF
    59 уровень,2 лекция
    Как ускорить обход больших директорий и обработку тысяч файлов: используем Files.walk() и параллельные стримы через parallel(), понимаем роль ForkJoinPool.commonPool() и настраиваем степень параллелизма. Разбираем, когда лучше перейти на ExecutorService, чем отличаются CPU-bound и IO-bound задачи, пишем пример подсчёта строк во всех ".java"-файлах и фиксируем best practices.
    Открыта
  • Разделение больших файлов на куски

    JAVA 25 SELF
    59 уровень,3 лекция
    Как ускорить обработку гигабайтных файлов: делим их на чанки (chunking), используем позиционный доступ через FileChannel и memory-mapped буферы MappedByteBuffer, параллелим вычисления с ExecutorService. Разберём ключевые методы позиционного ввода-вывода: position(...), read(...), write(...), критерии выбора размера чанка, пример параллельного подсчёта слов и типичные ошибки (границы чанков, ресурсы, количество потоков).
    Открыта
  • Конвейеры обработки файлов: producer–consumer

    JAVA 25 SELF
    59 уровень,4 лекция
    Разбираем, как организовать конвейер обработки файлов по паттерну Producer–Consumer с безопасным обменом через BlockingQueue (например, ArrayBlockingQueue), как работают блокирующие операции put() и take(), зачем нужен механизм backpressure и как корректно завершать потоки с помощью «poison pill» (например, "__END__", а не null). Запускаем потребителей через ExecutorService, добавляем визуализацию конвейера и разбираем типичные ошибки.
    Открыта
  • Введение в модули: зачем нужны

    JAVA 25 SELF
    60 уровень,0 лекция
    Разбираем, зачем Java 9 принесла модульную систему JPMS: чем плох « classpath-party», как модули вводят границы видимости на уровне контейнера, что такое module-info.java и как работать с директивами module, exports, requires, opens, uses/ provides. Обсудим преимущества (инкапсуляция, явные зависимости, безопасность, jlink), места применения (включая java.base, java.sql), полезные нюансы и типичные ошибки при миграции (забытый exports, пропущенный requires, дубли имен модулей).
    Открыта
  • 1
  • ...
  • 25
  • 26
  • 27
  • 28
  • 29
  • ...
  • 57
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush