Java并發(fā)編程之volatile變量介紹
volatile提供了弱同步機(jī)制,用來(lái)確保將變量更新通知到其它線程。volatile變量不會(huì)被緩存在寄存器中或者對(duì)其它處理器不可見(jiàn)的地方,因此在讀取volatile變量時(shí)總會(huì)返回最新寫入的值??梢韵胂蟪扇缦抡Z(yǔ)義,然而volatile是更輕量級(jí)的同步機(jī)制。volatile只能確??梢?jiàn)性,但不能保證原子性。也就是說(shuō)不能在復(fù)合操作用volatile變量,比如i++。
public synchronized void setValue(int value){
this.value = value;
}
public synchronized int getValue(){
return value;
}
當(dāng)滿足以下條件所有條件,才能使用volatile變量
1.對(duì)變量的寫入操作不依賴變量的當(dāng)前值,或者你能確保只有單個(gè)線程更新變量值。
2.該變量不會(huì)與其他狀態(tài)變量一起納入不變性條件
3.在訪問(wèn)變量是不需要加鎖
- Java并發(fā)編程——volatile關(guān)鍵字
- Java并發(fā)教程之volatile關(guān)鍵字詳解
- 詳解java并發(fā)編程(2) --Synchronized與Volatile區(qū)別
- Java并發(fā)編程-volatile可見(jiàn)性詳解
- 深入分析java并發(fā)編程中volatile的實(shí)現(xiàn)原理
- Java多線程并發(fā)編程 Volatile關(guān)鍵字
- java 高并發(fā)中volatile的實(shí)現(xiàn)原理
- Java并發(fā)編程:volatile關(guān)鍵字詳細(xì)解析
- Java 并發(fā)編程:volatile的使用及其原理解析
- 詳解Java并發(fā)編程基礎(chǔ)之volatile
相關(guān)文章
SpringBoot日志文件的實(shí)現(xiàn)示例
日志是程序中的重要組成部分,使用日志可以快速的發(fā)現(xiàn)和定位問(wèn)題,本文主要介紹了SpringBoot日志文件的實(shí)現(xiàn)示例,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08Java多線程下解決數(shù)據(jù)安全問(wèn)題
這篇文章主要介紹了Java多線程下解決數(shù)據(jù)安全問(wèn)題,本文使用代碼進(jìn)行講解,可供大家學(xué)習(xí)參考2021-08-08Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理
這篇文章主要介紹了Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02Java Web項(xiàng)目中編寫定時(shí)任務(wù)的實(shí)現(xiàn)
本篇文章主要介紹了Java Web項(xiàng)目中編寫定時(shí)任務(wù)的實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01idea中導(dǎo)入項(xiàng)目后main方法無(wú)法Run的解決
這篇文章主要介紹了idea中導(dǎo)入項(xiàng)目后main方法無(wú)法Run的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-03-03