良い質問です。しかし、この用語を理解するための手がかりは... sun.misc.Unsafe
が公開APIになった(または具体的にはhereを参照してください)JDK 9にあります。 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を見て、次の項目を見つけることができます:
は、変数が非揮発性および非finalとして宣言されたかのよう 設定のメモリセマンティクスで、newValueに、変数の値を設定します。 プレーン・ライト・アクセスとも呼ばれます。言い換えれば
、我々はリラックス書き込みがプレーンな書き込みアクセスと同じであることを、結論付けることができます。スレッド間で見られるように を保証するものではありません書き込み - その揮発性の反対のように...
:他の言葉では、私は上記のMichaelの解説が右であると信じています。
(変数がvolatile
宣言されたかのように動作し、反対方法setVolatile
を参照されたいです)。
これは、これに関連している可能性があります:https://www.wikiwand.com/en/Consistency_model#/Relaxed_Memory_Consistency_Models。確かに。 – sp00m
私はそれが揮発性の反対のように信じています - スレッド間で見られることが保証されていない書き込みです。 – Michael