Ця лекція про те, що таке спільний ресурс у багатопотокових застосунках, чому виникають стани гонки (race condition) і «втрачені оновлення», а також як захистити дані за допомогою
synchronized. Розберемо базові прийоми синхронізації (методи та блоки), поговоримо про сучасні інструменти з
java.util.concurrent (
Lock,
ReentrantLock,
Semaphore тощо), побачимо практичні приклади з інкрементом лічильника та типові помилки (неатомарність
i
++, неправильний об’єкт блокування, міфи про
volatile).