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