16.1 자바 메모리 모델은 무엇이며, 왜 사용하는가?

적절한 동기화 방법을 사용하지 않았다면 특정 스레드에서 변수에 할당된 최신 값을 읽어가지 못할 수도 있다.

병렬 프로그램이라 하더라도 대부분의 시간은 스레드 내부에서 각자의 작업을 처리하기 때문에, 스레드 간의 작업 조율 기능에 자원을 많이 낭비하는 일은 이득도 없으면서 성능만 떨어뜨릴 수 있다.

16.1.1 플랫폼 메모리 모델

JMM

프로그램이 메모리 구조에서 어느 정도의 기능을 사용할 수 있을지에 대한 정보를 제공하고, 메모리의 내용을 서로 공유하고자할 때 프로세서 간의 작업을 조율하기 위한 명령어 (메모리 베리어, 펜스) 를 제공한다.

Java synchronized 키워드와 Memory Barrier

JSR-133 Java Memory Model and Thread Specification 1.0 Proposed Final Draft

JSR 133 (Java Memory Model) FAQ 번역