Ten wykład dotyczy tego, czym jest zasób współdzielony w aplikacjach wielowątkowych, dlaczego powstają stany wyścigu (race condition) i „utracone aktualizacje”, oraz jak chronić dane za pomocą
synchronized. Omówimy podstawowe techniki synchronizacji (metody i bloki), porozmawiamy o nowoczesnych narzędziach z
java.util.concurrent (
Lock,
ReentrantLock,
Semaphore i in.), zobaczymy praktyczne przykłady z inkrementacją licznika oraz typowe błędy (nieatomowość
i
++, niewłaściwy obiekt blokady, mity na temat
volatile).