조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다. 1. 공유 중인 가변 데이터는 동기화해 사용하라synchronized배타적 실행원자적 실행해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장해당 블록에 접근 시, 락이 걸림 스레드 사이의 통신로컬 캐시의 값이 메인 메모리와의 동기화를 수행함필드를 읽을 때, 항상 수정이 완전히 반영된 값을 얻지 않음스레드의 로컬 캐시와 메인 스레드의 동기화가 즉각적으로 이루어지지 않음한 스레드가 저장한 값이 다른 스레드에게 보이는 가를 보장하지 않음 Volatile스레드의 메모리 가시성을 메인 메모리로 일치시킴단위 연산일 경우, 스레드 통신을 보장하므로 동기화 연산을 생략할 수 있음 AtomicLongprivate static final..