Курс на Stepik
Обложка курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java» на Stepik
15 200 ₽

FARM:Функциональная, асинхронная, реактивная, многопоточная Java 0.000

Открыть на
STEPIK.ORG

Курс направлен на формирование глубоких знаний и продвинутых практических навыков использования асинхронных и реактивных механизмов при разработке ПО на Java-платформе. Поскольку эти механизмы опираются на функциональный подход и многопоточность, в курс добавлены соответствующие уч.модули, причем они являются бесплатными и факультативными: если курсант хорошо знаком с такой тематикой, их можно пропустить без ущерба для понимания. Совокупная продолжительность лекций: 39+ часов; из них на ядро отведено ~75%.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Учеников на курсе 18
Сертификаты, выданные на курсе «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Сертификатов выдано 0
Отзывы о курсе «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Отзывов получено 0
Рейтинг курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Рейтинг курса 0.000
Уроки в курсе «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Количество уроков 303
Время прохождения курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Время прохождения курса
Стоимость курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Стоимость курса 15 200 ₽
Обновления курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Обновления курса
Дата публикации курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Дата публикации курса
Последнее обновление курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java»Последнее обновление
Сложность normal

Содержание курса

Разделы в курсе «FARM:Функциональная, асинхронная, реактивная, многопоточная Java» 10 разделов Уроки в курсе «FARM:Функциональная, асинхронная, реактивная, многопоточная Java» 303 урока Время прохождения курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java» 33 ч. Последнее обновление курса «FARM:Функциональная, асинхронная, реактивная, многопоточная Java» обн. 12 мая 2026

1. Факультативный модуль: Функциональная Java

21 урок
Открытый
1.1 Введение
21
17
35м 27с
0
Закрытый
1.2 Встроенные функциональные интерфейсы
16
12
30м 20с
0
Закрытый
1.3 Обзор операций
12
12
14м 32с
0
Закрытый
1.4 Методы map() и peek()
12
12
12м 39с
0
Закрытый
1.5 Класс Optional и «короткозамыкающие» операторы
12
12
10м 33с
0
Закрытый
1.6 Редукция и операторы преобразования данных
11
9
29м 2с
0
Закрытый
1.7 Утилитарный класс Collectors: обзор
11
11
14м 45с
0
Закрытый
1.8 Классификация с помощью groupingBy()
10
10
14м 17с
0
Закрытый
1.9 Бинарная сегментация с помощью partitioningBy()
9
9
3м 38с
0
Закрытый
1.10 Генераторы
9
9
18м 45с
0
Закрытый
1.11 Оператор flatMap()
10
10
20м 2с
0
Закрытый
1.12 Параллелизация стримов
9
9
11м 47с
0
Закрытый
1.13 Понятие statefulness
9
9
9м 1с
0
Закрытый
1.14 Параллельная редукция
10
7
22м 37с
1
Закрытый
1.15 Эксплуатационные хар-ки параллельных конвейеров
8
8
6м 31с
0
Закрытый
1.16 Практикум: лямбда-трейдеры
9
9
37м 26с
0
Закрытый
1.17 ЭКСТРА: Лямбда-нотация
9
9
10м 4с
0
Закрытый
1.18 ЭКСТРА: Каррированные функции
7
7
14м 29с
0
Закрытый
1.19 ЭКСТРА: Глубокое погружение в ссылки на методы – Часть 1
8
8
31м 37с
0
Закрытый
1.20 ЭКСТРА: Глубокое погружение в ссылки на методы – Часть 2
5
5
34м 42с
0
Закрытый
1.21 ЭКСТРА: Подробнее о методах интерфейса Function
3
3
32м 42с
0

2. Асинхронная Java --- подмодуль CompletableFuture

23 урока
Закрытый
2.1 Введение
9
7
30м 12с
0
Закрытый
2.2 Практика: старомодная Java и Future
8
8
18м 34с
0
Закрытый
2.3 Практика: CompletableFuture
8
8
6м 27с
0
Закрытый
2.4 Практика: несколько конвейеров
7
7
4м 29с
0
Закрытый
2.5 Практика: операция compose
9
9
8м 30с
0
Закрытый
2.6 Практика: операция combine
8
8
5м 35с
0
Закрытый
2.7 Практика: асинхронно, затем последовательно
7
7
4м 14с
0
Закрытый
2.8 Практика: асинхронно, затем параллельно
7
7
14м 6с
0
Закрытый
2.9 В каком смысле, "синхронно"?
7
7
6м 12с
0
Закрытый
2.10 Практика: найдем победителя забега
7
7
3м 58с
0
Закрытый
2.11 Практика: применим функцию с победителю
7
7
2м 58с
0
Закрытый
2.12 Операторы CompletableFuture: сводка
7
7
3м 35с
0
Закрытый
2.13 Обработка исключений через exceptionally()
7
7
10м 47с
0
Закрытый
2.14 Обработка исключений через handle()
8
8
5м 7с
0
Закрытый
2.15 Чекпойнты
7
7
6м 26с
0
Закрытый
2.16 Отмена (cancellation)
7
7
8м 30с
0
Закрытый
2.17 Завершение через completeExceptionally()
7
7
2м 26с
0
Закрытый
2.18 Завершение «вручную»
7
7
8м 24с
0
Закрытый
2.19 Завершение на Executor-пуле
7
7
18м 32с
0
Закрытый
2.20 Завершение на Executor-пуле по таймауту
7
7
14м 35с
0
Закрытый
2.21 Сходство и различия join() и get()
7
7
3м 0с
0
Закрытый
2.22 О кодовых базах к этому разделу
7
7
1м 15с
0
Закрытый
2.23 Заключение
7
7
2м 9с
0

3. Асинхронная Java --- подмодуль NIO (неблокирующий ввод/вывод)

32 урока
Закрытый
3.1 Освежаем в памяти: обзор базового функционала ввода/вывода
8
8
14м 30с
0
Закрытый
3.2 Практика: чтение/запись небольшого файла
7
7
6м 38с
0
Закрытый
3.3 Введение в NIO
7
7
10м 4с
0
Закрытый
3.4 Флагманские дата-типы NIO
7
7
10м 43с
0
Закрытый
3.5 Практика: работа с буфером
7
7
7м 18с
0
Закрытый
3.6 Практика: операция flip() на буфере
7
7
3м 35с
0
Закрытый
3.7 Практика: операция mark() на буфере
6
6
5м 16с
0
Закрытый
3.8 Что такое Channel
5
5
8м 27с
0
Закрытый
3.9 Практика: копирование через ченнел
5
5
4м 7с
0
Закрытый
3.10 Практика: передача данных через ченнел
5
5
4м 2с
0
Закрытый
3.11 Практика: ChannelServer и ChannelClient
5
5
9м 28с
0
Закрытый
3.12 Direct- и Mapped-буферы
5
5
5м 57с
0
Закрытый
3.13 Практика: чтение и запись файла через маппинг в память
5
5
12м 54с
0
Закрытый
3.14 Векторизация ввода/вывода
5
5
3м 7с
0
Закрытый
3.15 Практика: Scatter- и Gather-ченнелы
4
4
6м 22с
0
Закрытый
3.16 Интерфейс Selector
4
4
12м 11с
0
Закрытый
3.17 Практика: клиент-серверная связка с селектором
4
4
22м 29с
0
Закрытый
3.18 Пояснение: побитовый AND и численное продвижение
3
3
8м 49с
0
Закрытый
3.19 Практика: решение для клиент-серверной связки с селектором
3
3
6м 51с
0
Закрытый
3.20 Асинхронные ченнелы
2
2
2м 57с
0
Закрытый
3.21 Практика: AsyncFileChannel
2
2
4м 8с
0
Закрытый
3.22 Практика: AsyncFileHandler
2
2
3м 44с
0
Закрытый
3.23 Практика: AsyncClient
3
3
3м 45с
0
Закрытый
3.24 Практика: AsyncServer
2
2
5м 19с
0
Закрытый
3.25 Практика: AsyncToCompletableFuture
2
2
4м 10с
0
Закрытый
3.26 Расшаренная блокировка доступа к файлу
2
2
5м 3с
0
Закрытый
3.27 Практика: FileLock
2
2
7м 15с
0
Закрытый
3.28 IO и NIO: сводка
3
3
2м 59с
0
Закрытый
3.29 Практика: бенчмаркинг копирования
3
3
3м 47с
0
Закрытый
3.30 Знакомство с Netty
4
4
4м 18с
0
Закрытый
3.31 Практика: NettyClient и NettyServer
3
3
5м 56с
0
Закрытый
3.32 О кодовой базе к этому разделу
3
3
1м 52с
0

4. Реактивная Java: Суть реактивной парадигмы

13 уроков
Закрытый
4.1 Введение
5
5
4м 33с
0
Закрытый
4.2 О кодовой базе к этому разделу
5
5
3м 0с
0
Закрытый
4.3 Практика: Параллельные стримы
5
5
5м 47с
0
Закрытый
4.4 Практика: CompletableFuture
4
4
10м 56с
0
Закрытый
4.5 Практика: CompletableFuture с Executor-пулом
4
4
3м 29с
0
Закрытый
4.6 Асинхронность
4
4
5м 29с
0
Закрытый
4.7 Сходство и различия Rx и Stream
4
4
3м 24с
0
Закрытый
4.8 Reactive Stream Initiative
4
4
3м 20с
0
Закрытый
4.9 О регуляторах (противо)давления
4
4
6м 13с
0
Закрытый
4.10 «Реактивный манифест»
4
4
14м 1с
0
Закрытый
4.11 API реактивных стримов в Java
4
4
16м 10с
0
Закрытый
4.12 Практика: паттерн Observer
5
2
19м 26с
0
Закрытый
4.13 Заключение
3
3
5м 29с
0

5. RxJava: Первое знакомство

35 уроков
Закрытый
5.1 Введение
4
4
4м 20с
0
Закрытый
5.2 Практика: суммирование в функциональном и реактивном стилях
4
4
3м 58с
0
Закрытый
5.3 Observable допускает свое переиспользование!
4
4
5м 59с
0
Закрытый
5.4 Практика: неоднократно юзаем Observable
3
3
2м 0с
0
Закрытый
5.5 Практика: наблюдатель должен быть разным
2
2
11м 11с
0
Закрытый
5.6 И где тут Observer?
2
2
3м 2с
0
Закрытый
5.7 Работаем с командной строки
2
2
4м 4с
0
Закрытый
5.8 Практика: кеширование на Observable
2
2
2м 31с
0
Закрытый
5.9 Категории обзёрваблов
2
2
5м 52с
0
Закрытый
5.10 Практика: блокирующая подписка
1
1
3м 56с
0
Закрытый
5.11 Практика: неблокирующая подписка
1
1
14м 50с
0
Закрытый
5.12 Практика: «холодный» Observable
1
1
4м 32с
0
Закрытый
5.13 Практика: «горячий» Observable
1
1
6м 27с
0
Закрытый
5.14 Практика: OutOfMemoryError
2
2
6м 48с
0
Закрытый
5.15 Практика: Flowable без обработки противодавления
1
1
5м 13с
0
Закрытый
5.16 Практика: тривиальный сценарий обработки противодавления
1
1
2м 40с
0
Закрытый
5.17 Практика: утилизация (disposing)
1
1
5м 57с
0
Закрытый
5.18 Как создавать Observable
1
1
8м 54с
0
Закрытый
5.19 Практика: оператор create()
1
1
2м 20с
0
Закрытый
5.20 Классификация Rx-операторов
1
1
4м 59с
0
Закрытый
5.21 Практика: пребразователи
1
1
4м 8с
0
Закрытый
5.22 Практика: преобразование с небинарным селектором
2
2
3м 43с
0
Закрытый
5.23 Фильтрующие операторы
1
1
5м 39с
0
Закрытый
5.24 Практика: пример фильтрации
1
1
6м 33с
0
Закрытый
5.25 Комбинирующие операторы
1
1
3м 50с
0
Закрытый
5.26 Практика: комбинаторы
1
1
7м 58с
0
Закрытый
5.27 Практика: конвертация из ...
1
1
4м 45с
0
Закрытый
5.28 Практика: обработка исключений
1
1
3м 24с
0
Закрытый
5.29 Практика: жизненный цикл реактивного конвейера
1
1
7м 31с
0
Закрытый
5.30 Утилитарные операторы
1
1
6м 47с
0
Закрытый
5.31 Практика: применение утилит
1
1
3м 40с
0
Закрытый
5.32 Утилизация http-ресурса
1
1
4м 25с
0
Закрытый
5.33 Принципы работы условных и булевых операторов
1
1
3м 29с
0
Закрытый
5.34 Практика: Условные и булевые операторы
1
1
2м 36с
0
Закрытый
5.35 Противодавление и connectivity
1
1
8м 53с
0

6. RxJava: Глубокое погружение

110 уроков
Закрытый
6.1 Введение
1
1
0м 23с
0
Закрытый
6.2 Оператор just()
1
1
1м 20с
0
Закрытый
6.3 Разновидности источников
1
1
3м 12с
0
Закрытый
6.4 just() с маппером
1
1
1м 37с
0
Закрытый
6.5 Оператор interval()
1
1
6м 40с
0
Закрытый
6.6 Оператор create()
1
1
16м 50с
0
Закрытый
6.7 Оператор filter()
1
1
8м 50с
0
Закрытый
6.8 События наблюдателя
1
1
4м 17с
0
Закрытый
6.9 Оператор subscribe()
1
1
4м 52с
0
Закрытый
6.10 События жизенного цикла
1
1
2м 49с
0
Закрытый
6.11 Обработка исключений в функциональном стиле
1
1
41м 28с
0
Закрытый
6.12 Оператор doOnError()
1
1
1м 4с
0
Закрытый
6.13 Оператор onErrorReturn()
1
1
1м 11с
0
Закрытый
6.14 Оператор onErrorResume()
1
1
1м 20с
0
Закрытый
6.15 Оператор retry()
1
1
1м 3с
0
Закрытый
6.16 Оператор retryUntil()
1
1
2м 33с
0
Закрытый
6.17 Подробнее о «холодном» обзёрвабле
1
1
3м 15с
0
Закрытый
6.18 Подробнее о «горячем» обзёрвабле
1
1
2м 53с
0
Закрытый
6.19 «Холодный» обзёрвабл и sleep()
1
1
2м 43с
0
Закрытый
6.20 Оператор share()
1
1
4м 33с
0
Закрытый
6.21 Оператор connect()
1
1
2м 58с
0
Закрытый
6.22 Сходство и различия «горячего» и connectable-обзёрваблов
1
1
8м 12с
0
Закрытый
6.23 Оператор refCount()
1
1
13м 28с
0
Закрытый
6.24 Оператор autoConnect()
1
1
6м 30с
0
Закрытый
6.25 Фабрики обзёрваблов
1
1
6м 6с
0
Закрытый
6.26 Оператор defer()
1
1
6м 4с
0
Закрытый
6.27 Обзёрвабл категории Single
1
1
2м 14с
0
Закрытый
6.28 Обзёрвабл категории Maybe
1
1
3м 6с
0
Закрытый
6.29 Обзёрвабл категории Completable
1
1
2м 54с
0
Закрытый
6.30 Оператор onErrorComplete()
1
1
2м 51с
0
Закрытый
6.31 Подробнее про утилизацию (disposing)
0
0
-
0
Закрытый
6.32 Применение CompositeDisposable
0
0
-
0
Закрытый
6.33 Операторы-подавители
0
0
-
0
Закрытый
6.34 Операторы-преобразователи
0
0
-
0
Закрытый
6.35 Оператор delay()
0
0
-
0
Закрытый
6.36 Оператор scan()
0
0
-
0
Закрытый
6.37 Имплементируем «ползунок»
0
0
-
0
Закрытый
6.38 Оператор groupBy()
0
0
-
0
Закрытый
6.39 Оператор timestamp()
0
0
-
0
Закрытый
6.40 Операторы-редукторы
0
0
-
0
Закрытый
6.41 Операторы-коллекторы
0
0
-
0
Закрытый
6.42 Слияние
0
0
-
0
Закрытый
6.43 Конкатенация
0
0
-
0
Закрытый
6.44 И снова про flatMap()!
0
0
-
0
Закрытый
6.45 Зипперы
0
0
-
0
Закрытый
6.46 Оператор switchMap()
0
0
-
0
Закрытый
6.47 Оператор switchIfEmpty()
0
0
-
0
Закрытый
6.48 Оператор combineLatest()
0
0
-
0
Закрытый
6.49 Оператор replay() и класс ReplaySubject
0
0
-
0
Закрытый
6.50 Класс PublishSubject
0
0
-
0
Закрытый
6.51 Класс BehaviorSubject
0
0
-
0
Закрытый
6.52 Класс AsynchSubject
0
0
-
0
Закрытый
6.53 Класс UnicastSubject
0
0
-
0
Закрытый
6.54 «Подводные камни» Subject-конвейеров
0
0
-
0
Закрытый
6.55 Введение в Rx-многопоточность
0
0
-
0
Закрытый
6.56 Последовательное исполнение
0
0
-
0
Закрытый
6.57 Многопоточность через subscribeOn()
0
0
-
0
Закрытый
6.58 Поподробнее про blockingSubscribe() вместо Thread.sleep()
0
0
-
0
Закрытый
6.59 Знакомство с Scheduler-фабриками
0
0
-
0
Закрытый
6.60 Фабрика io()
0
0
-
0
Закрытый
6.61 Фабрика newThread()
0
0
-
0
Закрытый
6.62 Фабрика single()
0
0
-
0
Закрытый
6.63 Многопоточность на пользовательском Executor-пуле
0
0
-
0
Закрытый
6.64 Многопоточность с несколькими наблюдателями
0
0
-
0
Закрытый
6.65 Все на одном подпроцессе
0
0
-
0
Закрытый
6.66 Как проигнорировать subscribeOn()
0
0
-
0
Закрытый
6.67 Первый subscribeOn() побеждает
0
0
-
0
Закрытый
6.68 Знакомство с оператором observeOn()
0
0
-
0
Закрытый
6.69 observeOn() в действии
0
0
-
0
Закрытый
6.70 flatMap() и многопоточность
0
0
-
0
Закрытый
6.71 Оператор unsubscribeOn()
0
0
-
0
Закрытый
6.72 Буферизация
0
0
-
0
Закрытый
6.73 Наложение «окошек»
0
0
-
0
Закрытый
6.74 Дросселирование, выборка и устранение дребезга
0
0
-
0
Закрытый
6.75 Секундомер на операторе switchMap()
0
0
-
0
Закрытый
6.76 Как сгруппировать нажатия клавиш
0
0
-
0
Закрытый
6.77 Знакомство с Flowable
1
1
2м 33с
0
Закрытый
6.78 Для чего нужен Flowable
1
1
9м 54с
0
Закрытый
6.79 Flowable и Спецификация на реактивные конвейеры
1
1
3м 24с
0
Закрытый
6.80 Сходство и отличия Observable и Flowable
1
1
2м 11с
0
Закрытый
6.81 Интерфейс FlowableSubscriber
1
1
4м 18с
0
Закрытый
6.82 Стратегия противодавления Buffer
1
1
13м 15с
0
Закрытый
6.83 Стратегия противодавления Drop
1
1
10м 2с
0
Закрытый
6.84 Стратегия противодавления Latest
1
1
4м 34с
0
Закрытый
6.85 Конвертация Observable во Flowable
1
1
4м 44с
0
Закрытый
6.86 Генерация на Flowable
1
1
4м 54с
0
Закрытый
6.87 Генератор случайных чисел
1
1
5м 8с
0
Закрытый
6.88 Как реверснуть генерируемую последовательность на Flowable
0
0
-
0
Закрытый
6.89 Введение в реактивное тестирование
0
0
-
0
Закрытый
6.90 Тестируем blockingSubscribe()
0
0
-
0
Закрытый
6.91 Концепция блокирующих подписчиков
0
0
-
0
Закрытый
6.92 Оператор blockingFirst()
0
0
-
0
Закрытый
6.93 Оператор blockingLast()
0
0
-
0
Закрытый
6.94 Оператор blockingGet()
0
0
-
0
Закрытый
6.95 Оператор blockingIterable()
0
0
-
0
Закрытый
6.96 Оператор blockingForEach()
0
0
-
0
Закрытый
6.97 Оператор blockingNext()
0
0
-
0
Закрытый
6.98 Оператор blockingLatest()
0
0
-
0
Закрытый
6.99 Оператор blockingMostRecent()
1
1
3м 47с
0
Закрытый
6.100 Тестирование с TestObserver
0
0
-
0
Закрытый
6.101 Тестирование с TestScheduler
0
0
-
0
Закрытый
6.102 Отладочная демка
0
0
-
0
Закрытый
6.103 Подводим итоги
0
0
-
0
Закрытый
6.104 RxJava при смерти, или кому верить...
0
0
-
0
Закрытый
6.105 Предваряющее слово к самостоятельному практикуму
0
0
-
0
Закрытый
6.106 Решения задач из Практикума 1
1
0
2м 4с
0
Закрытый
6.107 Ответы на вопросы курсантов по Практикуму 1
0
0
-
0
Закрытый
6.108 Решения задач из Практикума 2
0
0
-
0
Закрытый
6.109 RxJava: подводим итоги обсуждения
0
0
-
0
Закрытый
6.110 RxJava: доп.примеры (будут пополняться по мере появления)
0
0
15м 1с
0

7. Project Reactor

9 уроков
Закрытый
7.1 Обзор библиотеки Reactor
2
2
27м 41с
0
Закрытый
7.2 Базовые приемы работы
1
1
5м 59с
0
Закрытый
7.3 Обработка противодавления в Reactor
1
1
18м 16с
0
Закрытый
7.4 Schedulers в Reactor
2
2
8м 35с
0
Закрытый
7.5 Параллельный Flux
1
1
2м 35с
0
Закрытый
7.6 Процессоры
1
1
9м 58с
0
Закрытый
7.7 Тестирование
1
1
2м 18с
0
Закрытый
7.8 Решение задач из Практикума
1
0
27м 12с
0
Закрытый
7.9 Reactor: подводим итоги обсуждения
1
1
0м 28с
0

8. Spring-модуль WebFlux

13 уроков
Закрытый
8.1 Знакомство с WebFlux
6
6
24м 49с
0
Закрытый
8.2 Практика с WebFlux
6
2
63м 44с
0
Закрытый
8.3 Знакомство с WebClient
2
2
4м 40с
0
Закрытый
8.4 Практика с WebClient
2
2
14м 31с
0
Закрытый
8.5 Подробнее о различиях между WebClient и RestTemplate
2
2
4м 54с
0
Закрытый
8.6 WebFlux и СУБД
2
2
7м 42с
0
Закрытый
8.7 Практика: WebFlux в связке с MongoDB --- Часть 1/2
2
1
30м 10с
0
Закрытый
8.8 Практика: WebFlux в связке с MongoDB --- Часть 2/2
1
0
3м 7с
0
Закрытый
8.9 Бенчмаркинг с WebFlux
1
1
4м 5с
0
Закрытый
8.10 Тестирование реактивных Spring-приложений
1
0
4м 32с
0
Закрытый
8.11 Простейший R2DBC-проект
1
1
12м 54с
0
Закрытый
8.12 WebFlux: подводим итоги обсуждения
1
1
29м 39с
0
Закрытый
8.13 Рекомендуемые практики создания реактивного кода и Заключение
0
0
-
0

9. Бонусные лекции Reactive Extras

1 урок
Закрытый
9.1 Реактивная имплементация брокера сообщений Kafka
4
2
75м 37с
0

10. Факультативный модуль – Многопоточная Java

46 уроков
Закрытый
10.1 Архитектура фон Неймана
3
3
8м 35с
0
Закрытый
10.2 Пользовательские процессы
3
3
11м 53с
0
Закрытый
10.3 Оценка потребного размера ОЗУ
3
2
10м 38с
0
Закрытый
10.4 Процессы и их роли
1
1
5м 3с
0
Закрытый
10.5 Сегменты памяти
3
3
5м 21с
0
Закрытый
10.6 Знакомство с подпроцессами (threads)
3
3
6м 48с
0
Закрытый
10.7 Подпроцессы пользователя и ОС
2
2
8м 41с
0
Закрытый
10.8 Сходства и отличия процессов и подпроцессов
2
2
4м 50с
0
Закрытый
10.9 Что может пойти не так
3
3
5м 47с
0
Закрытый
10.10 Мониторы
3
3
5м 47с
0
Закрытый
10.11 Синхронизирующие абстрации
3
3
3м 1с
0
Закрытый
10.12 Создание подпроцесса
3
3
6м 26с
0
Закрытый
10.13 Состояния подпроцесса
3
3
10м 31с
0
Закрытый
10.14 Приоритет подпроцесса
2
2
6м 21с
0
Закрытый
10.15 Метод join()
3
3
5м 38с
0
Закрытый
10.16 Метод interrupt()
2
2
2м 21с
0
Закрытый
10.17 Связка wait() и notify()
3
3
10м 51с
0
Закрытый
10.18 Ключевое слово volatile
2
2
4м 23с
0
Закрытый
10.19 Что стоит за volatile
2
2
16м 38с
0
Закрытый
10.20 Ключевое слово synchronized
2
2
7м 25с
0
Закрытый
10.21 Блоки синхронизации
2
2
3м 47с
0
Закрытый
10.22 Статическая блокировка (deadlock)
2
2
8м 58с
0
Закрытый
10.23 Счетчик с монитором
3
3
14м 27с
0
Закрытый
10.24 Интерфейс Lock
3
3
4м 14с
0
Закрытый
10.25 Класс ReentrantLock
3
3
9м 32с
0
Закрытый
10.26 Атомарный счетчик
3
3
3м 48с
0
Закрытый
10.27 Паттерн Producer-Consumer на связке wait/notify
2
2
3м 43с
0
Закрытый
10.28 С Новым годом! на связке wait/notify
2
2
28м 47с
0
Закрытый
10.29 Паттерн Producer-Consumer на связке Lock/Condition
3
3
2м 56с
0
Закрытый
10.30 ExecutorService с Runnable
3
3
6м 5с
0
Закрытый
10.31 ExecutorService с Semaphore
2
2
4м 52с
0
Закрытый
10.32 ExecutorService с Callable
2
2
4м 46с
0
Закрытый
10.33 ExecutorService и метод awaitTermination()
1
1
6м 11с
0
Закрытый
10.34 Класс CyclicBarrier
2
2
2м 30с
0
Закрытый
10.35 CyclicBarrier в действии
2
2
2м 59с
0
Закрытый
10.36 Фреймворк Fork/Join
2
2
9м 7с
0
Закрытый
10.37 Рекурсия: top-down и bottom-up
2
2
12м 18с
0
Закрытый
10.38 Рекурсия: пример доказательства по индукции
2
2
9м 7с
0
Закрытый
10.39 Рекурсивное вычисление площади
1
1
8м 44с
0
Закрытый
10.40 Простейший пример с Fork/Join
2
2
5м 54с
0
Закрытый
10.41 Бенчмаркинг суммирования на Fork/Join
1
1
9м 34с
0
Закрытый
10.42 ЭКСТРА: Concurrent, multithreaded и parallel
1
1
7м 56с
0
Закрытый
10.43 ЭКСТРА: Race Conditions и Data Races
1
1
10м 42с
0
Закрытый
10.44 ЭКСТРА: Состояние гонки в бинарных семафорах и мьютексах
1
1
16м 20с
0
Закрытый
10.45 ЭКСТРА: Liveness и синхронизация
2
2
20м 42с
0
Закрытый
10.46 ЭКСТРА: Знакомство с виртуальными подпроцессами
3
3
4м 22с
0