이 강의는 멀티스레드 애플리케이션에서 공유 자원이 무엇인지, 왜 race condition(경쟁 상태)과 ‘lost update(업데이트 손실)’가 발생하는지, 그리고
synchronized로 데이터를 어떻게 보호하는지에 대해 다룹니다. 동기화의 기본 기법(메서드와 블록)을 살펴보고,
java.util.concurrent의 현대적 도구들(
Lock,
ReentrantLock,
Semaphore 등)을 이야기하며, 카운터 인크리먼트 실습과 전형적인 실수들(
i
++의 비원자성, 잘못된 락 객체,
volatile에 관한 미신)을 확인합니다.