課程
/后端開發(fā)
/Java
/細(xì)說(shuō)Java多線程之內(nèi)存可見性
volatile既然不能保證原子性,那么volatile是不是沒有什么用了?沒有什么應(yīng)用場(chǎng)景了?
2016-07-28
源自:細(xì)說(shuō)Java多線程之內(nèi)存可見性 4-4
正在回答
這么跟你解釋:一行java代碼被cpu執(zhí)行的時(shí)候執(zhí)行的是若干條cpu指令,synchronized對(duì)應(yīng)到cpu執(zhí)行若干條指令,但是volatile也對(duì)應(yīng)若干條指令,相同的是他們對(duì)應(yīng)的指令有一些相同的,即有重疊,但是又有差異,于是功能有相同也有差異。他們的使用場(chǎng)景也是如此。你現(xiàn)在不適合去理解深沉原理,先學(xué)會(huì)用,用對(duì)場(chǎng)景。
這個(gè)就要涉及到volatile和synchronized兩者的比較了。在實(shí)際使用中,synchronized比volatile使用更加廣泛,但是由于volatile比synchronized更加輕量級(jí),不需要加鎖,因此不會(huì)阻塞線程。所以在能保證共享變量的原子性的情況下使用volatile的效率會(huì)更高。
舉報(bào)
用兩種方式實(shí)現(xiàn)內(nèi)存可見性,代領(lǐng)大家深層次學(xué)習(xí)Java中的內(nèi)存
2 回答volatile原子性問題
1 回答volatile不能保證原子性,解決方法
9 回答不是說(shuō)volatile不保證原子性嗎?為什么對(duì)于64位類型的變量用volatile修飾?
1 回答原子性是什么意思?
2 回答關(guān)于long和double非原子性的解決辦法
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-10-10
這么跟你解釋:一行java代碼被cpu執(zhí)行的時(shí)候執(zhí)行的是若干條cpu指令,synchronized對(duì)應(yīng)到cpu執(zhí)行若干條指令,但是volatile也對(duì)應(yīng)若干條指令,相同的是他們對(duì)應(yīng)的指令有一些相同的,即有重疊,但是又有差異,于是功能有相同也有差異。他們的使用場(chǎng)景也是如此。你現(xiàn)在不適合去理解深沉原理,先學(xué)會(huì)用,用對(duì)場(chǎng)景。
2016-07-28
這個(gè)就要涉及到volatile和synchronized兩者的比較了。在實(shí)際使用中,synchronized比volatile使用更加廣泛,但是由于volatile比synchronized更加輕量級(jí),不需要加鎖,因此不會(huì)阻塞線程。所以在能保證共享變量的原子性的情況下使用volatile的效率會(huì)更高。