좋은 질문입니다. 그러나이 용어를 이해하는 데 대한 단서는 다음과 같습니다. JDK 9, sun.misc.Unsafe
이 공개 API (here 참조)가되었거나 될 것입니다. JDK (9)는 다음과 같이 구현을 말한다 해당 장소에서
: ITEM
이 sun.misc.Unsafe
으로 비슷한 기능을 구현 VarHandle
클래스의 인스턴스 인
static final class Node<E> {
volatile E item;
volatile Node<E> next;
/**
* Constructs a node holding item. Uses relaxed write because
* item can only be seen after piggy-backing publication via CAS.
*/
Node(E item) {
ITEM.set(this, item);
}
...
}
. 이제, 우리는이 방법의 JavaDoc description을보고 다음을 찾을 수 있습니다
변수는 비 휘발성 및 비 최종 선언 된 경우 등 설정의 메모리 의미로는 NEWVALUE에 변수의 값을 설정합니다. 일반적으로 일반 쓰기 액세스라고합니다. 즉
, 우리는 편안한 쓰기이 일반 쓰기 액세스와 동일한 지, 결론을 내릴 수있다. 즉, 나는 위의 Michael의 논평이 옳다고 생각 :
... 그 휘발성의 반대 같은 - 스레드를 통해 볼 수 을 보장 할 수 없습니다 쓰기.
은 (변수 선언되었는지
volatile
로 작동 대향
setVolatile
방법 참조).
이것은 다음과 관련 될 수 있습니다. https://www.wikiwand.com/en/Consistency_model#/Relaxed_Memory_Consistency_Models. 확실하지. – sp00m
필자는 휘발성과 반대라고 생각합니다. 쓰기는 쓰레드에서 볼 수있는 것이 아닙니다. – Michael