답둘 이상의 쓰레드가 공동의 자원을 공유할 때, 한 쓰레드가 그 자원을 수정하는데 다른 쓰레드가 동시에 수정하면 문제가 발생할 수 있습니다.이 때 사용하는 것이 syncronized 키워드입니다. method 혹은 블럭에 사용 가능합니다.synchronized는 메서드와 블럭을 통해 설정 가능하며 해당 구역에 쓰레드 접근 시 락을 획득하여 구간을 빠져 나올때 까지 다른 쓰레드 접근을 막는 매커니즘입니다. Java의 동기화 Synchronized 개념 정리#1Java를 프로그래밍 하다면 multi-thread로 인하여 동기화를 제어해야하는 경우가 생깁니다. 그래서 흔히 Synchronized 키워드를 사용하는데요 그냥 multi-thread로 동시접근되는것을 막는다! 라는 개념보다는 여러 case를 살펴보면서 좀더 디테일하게 보려 합니다. Thread는 class의 멤버변수의 자원에 접근할 수 있습니다. 이건 멤버변수가 Heap 메모리를 사용하기 때문에 가능한 부분인데 여하튼 여러 Thread가 공유자원에 접근하는 경우 동기화를 해 줘야 할 필요가 있습니다.https://tourspace.tistory.com/54