ЛЕКЦІЯ 1: ЗАГАЛЬНІ ВІДОМОСТІ
У першій лекції нашого курсу розглядаються: робота процесора, підтримка процесів і потоків у операційних системах, основні поняття й визначення багатопотоковості, відмінності між процесами та потоками.
ЛЕКЦІЯ 2: ПОТОКИ ТА ЇХНІ ВЛАСТИВОСТІ, БЛОКУВАННЯ
У другій лекції йдеться про засоби роботи з багатопотоковістю та основи багатопотокових програм — створення, запуск, властивості, стани та синхронізацію, зупинку і переривання потоків; volatile змінні та відношення happens-before. У лекції наведені приклади коректного використання ключового слова synchronized та пояснюється, чим загрожує його неправильне використання.
ЛЕКЦІЯ 3: БЛОКУВАННЯ ТА КЛАСИ СИНХРОНІЗАЦІЇ ПОТОКІВ
Із появою Java 1.5 було додано пакет java.util.concurrent, що містить інструменти для роботи в багатопотоковому середовищі, зокрема блокування та колекції. Лекція 3 присвячена блокуванням та іншим методам синхронізації потоків.
ЛЕКЦІЯ 4: ПУЛИ ПОТОКІВ
Створення потоків для виконання великої кількості задач є дуже трудомісткою справою: створення потоку та звільнення ресурсів — дорогі операції. Для розв’язання проблеми ввели пули потоків і черги задач, з яких беруться задачі для пулів.
У четвертій лекції розглянули пули потоків Runnable і Callable, інтерфейс Threadfactory, клас Threadpollexecutor, фреймворк Fork/Join Poll, скасування задач у Executors та обробку винятків.
ЛЕКЦІЯ 5: АТОМАРНІ ЗМІННІ ТА БАГАТОПОТОКОВІ КОЛЕКЦІЇ
У Java є колекції, призначені для використання в багатопотоковому середовищі, які реалізують різні механізми синхронізації даних. До виходу Java 1.5 існували багатопотокові колекції Stack, Vector і HashTable. У Java 1.2 з'явився утилітний клас Collections, що надає статичні методи для обертання стандартних колекцій у їхні синхронізовані представлення.
Передостання п'ята лекція — про атомарні змінні, багатопотокові колекції, статистичні методи класу Collections, Copy on write і Skip list структури даних, інтерфейс Blockingqueue та багатопотокові реалізації інтерфейсу Map.
ЛЕКЦІЯ 6: ВЗАЄМНІ БЛОКУВАННЯ ТА ДАМПИ ПОТОКІВ
У некоректно спроектованій багатопотоковій програмі два потоки можуть блокувати один одного. У цьому випадку їхнє виконання зависає, доки програму не зупинять ззовні. Така ситуація називається deadlock. У заключній лекції автори курсу розібрали дампи потоків, просте взаємне блокування, прихований дедлок та Livelock.









