volatile特别适合于状态标记量
举个栗子:
volatile boolean inited = false;
// 线程1
context = loadContext();
inited = true;
// 线程2
while(!inited) {
sleep();
}
doSomethingWithConfig(context);分析:
上面的代码利用volatile修饰的inited保证上下文的初始化是否完成,线程1初始化,线程2必须保证线程1初始化完成才能继续进行下去。加入volatile可以保证变量inited的改变及时刷到主存中,可以被其他线程及时看到。
本文通过一个简单的示例展示了如何使用volatile关键字来确保多线程环境下变量的状态更新能够被所有线程正确地识别。具体来说,volatile关键字可以帮助程序员解决因线程间变量可见性导致的问题。
1317

被折叠的 条评论
为什么被折叠?



