읽기 및 정수 (INT되지 않음) 다른 원자 쓰기는 다음과 같이하지 않으면원자 읽기 및 원자 쓰기를 보장하는 방법은 무엇입니까? 나는 원자 원하는
volatile Double a; // not double
volatile Long b; // not long
Integer c; // not int
Boolean d; // not boolean
, 어떻게 내가 그들을 원자 만들 것?
편집 : 명확한 설명을 위해 읽기와 쓰기를 결합한 원자 적 연산이 필요하지 않습니다. 나는 읽기가 원자 일 필요가 있고 쓰기는 원자 일 따름이어야합니다.
Edit2가 : @ 피터 Lawrey, @PeterLawrey,이 아이러니 : 여기 Double a; a = 0.5d;
a
이 기준이므로 기록 원자이다. 이 부분에있는 동안 double a; a = 0.5d;
글자는 원자적일 수 있습니다. 그리고 Double
은 double
을 래핑합니다. 물론 나는 원자 적으로 읽고 쓰여지는 참조를 가진 임의의 객체의 래핑 된 내용에 같은 것을 적용하지 않을 것이다.
Edit3 : 원래 원자 읽기를 원했고 원 자성이 스레드간에 일관성을 유지한다고 생각하면서 작성했습니다. 나는 그렇지 못하며 여전히 변동성이 필요하다는 것을 발견했습니다.
아니요 방금 원자 읽기를 의미했습니다. 그리고 원자 쓰기. 그들은 함께있을 필요가 없습니다. – H2ONaCl
모든 참조 액세스는 원자 적입니다. 원자가 될 수 있다고 보장되지 않는 유일한 접근은'double' 또는'long'에 대한 비 휘발성 액세스입니다. –
편집 2를 참조하십시오. – H2ONaCl