Map configOptions; char[] configText; //此变量必须定义为volatile volatile boolean initialized = false; //假设以下代码在线程A中执行 //模拟读取配置信息,当读取完成后 //将initialized设置为true来通知其它线程配置可用 configOptions = new HashMap(); configText = readConfigFile(fileName); processConfigOptions(configText, configOptions); initialized = true; //假设以下代码在线程B中执行 //等线程A待initialized为true,代表线程A已经把配置信息初始化完成 while(!initialized) { sleep(); } //使用线程A中初始化好的配置信息 doSomethingWithConfig();
深入理解Java虚拟机笔记---volatile变量的特殊规则
原文地址:http://blog.csdn.net/xtayfjpk/article/details/41948975