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