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