스칼라와 자바 메모리 모델
-
20-09-2019 - |
문제
Java 메모리 모델 (1.5 이후)이 취급됩니다 final
비에 대해 다르게 필드final
필드. 특히, 제공 this
건설 중에는 참조가 탈출되지 않습니다 final
생성자의 필드는 데이터 레이스를 통해 객체를 다른 스레드에 사용할 수있게하더라도 다른 스레드에서 보장됩니다. (비에게 쓰기final
필드는 보장되지 않기 때문에 부적절하게 게시하면 다른 스레드는 부분적으로 구성된 상태에서 볼 수 있습니다.)
스칼라 컴파일러가 어떻게 생성하는지에 대한 문서가 있습니까? final
(비가 아닌final
) 클래스의 후원 필드? 언어 사양을 살펴보고 웹을 검색했지만 확실한 답변을 찾을 수는 없습니다. (이에 비해 @scala.volatile
주석 ~이다 필드를 표시하도록 문서화되었습니다 volatile
)
다른 팁
그것은 a final
당신이 무언가를 선언 할 때 필드 val
. 다음과 같은 참조를 수정할 수있는 모든 것 var
, (분명히) 할 수 없습니다 final
아래에.
이것은 그것을 의미합니다 case classes
최종 필드도 포함합니다 (사례 클래스 생성자에 대한 인수가 암시 적으로 val
에스)
나는 이것에 대한 문서 버그를 제출했다 스칼라 버그 체계.
제휴하지 않습니다 StackOverflow