volatile具体使用场景

volatile特别适合于 状态标记量
举个栗子:
volatile boolean inited = false;

// 线程1
context = loadContext();
inited = true;

// 线程2
while(!inited) {
    sleep();
}
doSomethingWithConfig(context);
分析:
上面的代码利用volatile修饰的inited保证上下文的初始化是否完成,线程1初始化,线程2必须保证线程1初始化完成才能继续进行下去。加入volatile可以保证变量inited的改变及时刷到主存中,可以被其他线程及时看到。

猜你喜欢

转载自blog.csdn.net/timchen525/article/details/80444555
今日推荐