Сухорослов Олег рассказывает о многопоточном программировании.
- Concurrency
- Зачем нужно несколько процессов
- Процессы и потоки
- Реализации потоков
- Многоточечное программирование на Java
- Класс java.lang.Thread (Поток)
- Класс Person
- Интерфейс java.lang.Runnable (Задание)
- Результаты запуска RunnablePerson
- Банк
- Банковский счет
- Клиент v1
- Запуск
- Клиент v2
- Входные данные
- Результаты запусков
- Отрицательный баланс
- Возможная трасса run()
- Возможная трасса post()
- Состояние гонки (Race Condition)
- Безопасность (Safety)
- Синхронизация
- Взаимное исключение
- Модификатор synchronized
- Результаты запусков
- Блок synchronized
- Результаты запусков
- Блок synchronized 2
- Результат
- Перевод денег
- Bank
- Client
- Входные данные
- Результаты
- Взаимная блокировка
- Живучесть
- Как избежать взаимной блокировки
- Условия возникновения взаимной блокировки
- Модифицированный Bank
- Пакет util.concurrent.locks
- Еще одна реализация перевода
- Остановка потока
- Java Memory Model
- Пример с двумя переменными
- Обеспечение видимости изменений между потоками
- StopThread2
- Ключевое слово volatile
- Остановка потока
- Общая схема реализации
- Приоритеты потоков
- Задача об обедающих философах
- Философ
- Наивное решение
- Запуск
- Результат
- Домашнее задание