You are opening our Ukrainian language website. You can keep reading or switch to other languages.
18.08.2021
2 хвилин читання

Багатопотоковість у Java: курс із шести лекцій

Минулого року наші колеги, Java-розробник Володимир Фролов та Android-розробник Микита Сізінцев, склали короткий курс із багатопотоковості у Java з шести лекцій. Ми опублікували його на сайті DataArt та отримали чудові відгуки. Тепер зібрали всі лекції разом, щоб показати тим, хто приєднався до нас нещодавно, та нагадати всім іншим.
Багатопотоковість у Java: курс із шести лекцій

ЛЕКЦІЯ 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.

Дуже потрібні
1 3
Підпишіться на розсилку
Підпишіться на розсилку, щоб не пропустити цікаву зустріч чи вебінар