私が理解しているように、揮発性変数へのアクセスは他の変数へのアクセスで並べ替えられないという新しいJavaメモリモデルの義務を理解しているため、次のコードは正しいです:
Map configOptions;
char[] configText;
volatile boolean initialized = false;
// In Thread A
configOptions = new HashMap();
configText = readConfigFile(fileName);
processConfigOptions(configText, configOptions);
initialized = true;
// In Thread B
while (!initialized)
sleep();
// use configOptions
initialized
構成オプションに設定されている場合true
、すでに初期化されていますが、表示されていますか? つまり、すでにメインメモリにあるということですか?