2017-02-21 4 views
0

"비 휘발성 long 및 double 변수 읽기/쓰기"는 비 원자 일 수 있습니다. 이것은 정적 및 비 정적 필드 및 배열과 관련이 있습니다.Java의 long 및 double 로컬 변수 읽기 및 쓰기

그리고 대응하는 long/double 로컬 변수는 어떨까요? 그들은 원자 성이든 아니든간에.

+1

로컬 변수가 여러 스레드에서 공유되지 않습니다. –

+0

지역에 있다면 원 자성에 대해 왜 신경 씁니까? 로컬 변수는 다른 스레드가 액세스 할 수 없습니다. – sparik

+0

일반적으로 long 및 double에 대한 읽기 읽기는 어둡지 않기 때문에 문제가 발생합니다. 한 스레드에서만 액세스 할 수있는 로컬 변수를 사용하면 문제가되지 않습니다. 어쩌면 중복 : http://stackoverflow.com/questions/517532/writing-long-and-double-is-not-atomic-in-java – Supahupe

답변

1

프리미티브 값은 로컬 변수로 표시되는 경우 절대로 힙에 저장되지 않습니다. 즉, 스택에 저장되고 다른 스레드에서 액세스 할 수 없으므로 공유 할 수 없습니다. 이 스레드 내에서 순차 일관성이 보장되므로 마지막으로 할당 된 값이 항상 표시됩니다.