volatile boolean inited = false;
// 线程1
context = loadContext();
inited = true;
// 线程2
while(!inited) {
sleep();
}
doSomethingWithConfig(context);
volatile具体使用场景
volatile特别适合于状态标记量
举个栗子:
分析:
上面的代码利用volatile修饰的inited保证上下文的初始化是否完成,线程1初始化,线程2必须保证线程1初始化完成才能继续进行下去。加入volatile可以保证变量inited的改变及时刷到主存中,可以被其他线程及时看到。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Happens-Before原则
H阿布
2020-07-08 11:03:32
volatile关键字的作用及使用场景
H阿布
2020-07-08 11:03:21
6.4 ThreadPoolExecutor线程池的关闭方法shutdown和shutdownNow区别、示例
一点光辉
2020-07-08 10:46:31
为什么java线程不推荐调用stop,suspend,resume方法
https://my.oschina.net/u/1047640/blog/506901
BaldWinf
2020-07-08 08:59:06
并发编程(一)之线程的创建和启动
易水墨龙吟
2020-07-08 06:13:18
Java知识点——线程通信(线程之间的联系)
青柠小鱼码字猴
2020-07-08 03:45:43
Java多线程及线程池学习
帥樂
2020-07-08 03:27:17
Atomic原子类-1
yan-x-long
2020-07-08 03:14:08
【并发容器精讲二、】CopyOnWriteArrayList
yan-x-long
2020-07-08 03:14:08
【并发容器精讲一、】ConcurrentHashMap
yan-x-long
2020-07-08 03:14:08
手动实现线程池
Benett-Chen
2020-07-08 02:30:38
Java架构师Day28-并发编程之线程池
攻城狮Chova
2020-07-08 01:44:49
java stop方法为什么不能用?
imagine0623
2020-07-08 01:18:27
CopyOnWriteArrayList和ReentrantReadWriteLock
lovesman
2020-07-08 00:13:54