플랫폼 스레드와 커널 스레드
JVM 객체 메모리 레이아웃과 Lock flag
JVM과 별개인 CPU 캐시 일관성
JVM 메인 메모리와 작업 메모리
스레드가 변수에 작업을 하면 JVM 메인 메모리에 바로 반영하지 않는다. → 스레드는 각자의 작업 메모리에 저장
이 때문에 멀티 스레드 상황에서 변수에 쓰기 이후 다른 스레드에서 읽기를 하면 값이 동기화되지 않을 수도 있다.
스레드 작업 메모리 동기화 문제
기본적으로 작업 메모리의 변화가 메인 메모리에 즉시 반영되지 않는다.
작업 메모리와 메인 메모리의 동기화 시점이 언제냐?
- 명시적 동기화 (synchronized, volatile)
- Thread.start(), join() 호출
- Lock, Atomic 클래스 사용
- 클래스 로딩 과정에서 정적 변수 초기화 시
- 기타 JVM이 정한 최적화, 동기화 기준 충족 시 → JVM 마다 다를 수 있다.
volatile과 메모리 가시성
경쟁 조건 (Race condition)
가상 스레드 개념 소개
스레드 실행 단위다.