volatile 和 synchronized的区别
生活随笔
收集整理的這篇文章主要介紹了
volatile 和 synchronized的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
1.volatile本質(zhì)是在告訴JVM當(dāng)前變量在寄存器(工作內(nèi)存)中的值是不確定的,需要從主存中讀取。synchronized則是鎖定當(dāng)前變量,只有當(dāng)前線程可以訪問(wèn)該變量,其他線程被阻塞住。
2.volatile僅能使用在變量級(jí)別;synchronized則可以使用在變量、方法、和類(lèi)級(jí)別。
3.volatile僅能實(shí)現(xiàn)變量的修改可見(jiàn)性,不能保證原子性;而synchronized則可以保證變量的修改可見(jiàn)性和原子性
4.volatile不會(huì)造成線程的阻塞;synchronized可能會(huì)造成線程的阻塞。
5.volatile標(biāo)記的變量不會(huì)被編譯器優(yōu)化;synchronized標(biāo)記的變量可以被編譯器優(yōu)化。
轉(zhuǎn)載于:https://my.oschina.net/134596/blog/1636884
總結(jié)
以上是生活随笔為你收集整理的volatile 和 synchronized的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何在SAP CRM WebClient
- 下一篇: 08.Eclipse下Ndk开发(使用f