Java 메모리 모델 (1.5 이후)은 final
필드를 final
필드와 다르게 처리합니다. 특히, 건설 중에 참조가 벗어나지 않는 경우, 생성자의 final
필드에 대한 쓰기가 다른 스레드에서 데이터 경합을 통해 다른 스레드에서 사용 가능하게 되어도 다른 스레드에서 볼 수 있도록 보장됩니다. 비 final
필드에 대한 쓰기는 표시되지 않을 수 있으므로 부적절하게 게시하면 다른 스레드가 부분적으로 구성된 상태에서 해당 스레드를 볼 수 있습니다.스칼라 및 Java 메모리 모델
Scala 컴파일러가 생성하는 방법/final
(final
이 아닌) 클래스 용 백업 입력란이 있습니까? 언어 사양을 살펴본 후 웹을 검색했지만 확실한 답을 찾을 수 없습니다. 당신이 val
로 뭔가를 선언 할 때 그것은 final
필드를 만듭니다
하지만 동시성 관점에서 볼 때 언어 구조의 동작은 논쟁의 여지가 있습니다. –