Java 17 기준으로 Thread/Runnable 차이, synchronized와 volatile의 의미, 데드락이 생기는 이유와 예방 패턴을 실무 관점에서 정리합니다.도입 (문제 상황)간단한 카운터를 여러 스레드에서 올렸는데 결과가 매번 달라지거나, 로그는 멀쩡한데 특정 환경에서만 간헐적으로 “멈춤”이 생긴 경험이 있으실 거예요. 멀티스레드는 “동시에 돌아가니 빨라지겠지”로 시작하지만, 동기화 규칙을 모르면 재현도 어려운 버그로 이어집니다.핵심 개념: Java 스레드와 동기화가 중요한 이유Java에서 스레드는 “CPU를 더 쓰는 기능”이라기보다 공유 상태(shared state)를 어떻게 안전하게 다룰지의 문제에 가깝습니다. 특히 아래 3가지를 구분해두면 사고가 크게 줄어듭니다.Thread vs Ru..