据我了解,新的 java 内存模型要求对 volatile 变量的访问不会随着对其他变量的访问而重新排序,因此以下代码是正确的:
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
配置选项已经初始化了,但是它是可见的吗?我的意思是它已经在主内存中了吗?