卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

volatile底層實(shí)現(xiàn)原理 volatile關(guān)鍵字在Java中有什么作用?

volatile關(guān)鍵字在Java中有什么作用?volatile是防止指令重排序來(lái)保證可見(jiàn)性對(duì)于JVM層面是防止編譯器的重排序同時(shí),對(duì)于有些cpu來(lái)說(shuō),他們會(huì)通過(guò)緩存鎖或者中線索來(lái)解決緩存可見(jiàn)性但是,目

volatile關(guān)鍵字在Java中有什么作用?

volatile是防止指令重排序來(lái)保證可見(jiàn)性

對(duì)于JVM層面是防止編譯器的重排序

同時(shí),對(duì)于有些cpu來(lái)說(shuō),他們會(huì)通過(guò)緩存鎖或者中線索來(lái)解決緩存可見(jiàn)性

但是,目前很多cpu都做了優(yōu)化,因?yàn)榫彺嬉恢滦訫ESI會(huì)帶來(lái)性能開(kāi)銷,所以用到了storebuffer機(jī)制來(lái)做異步處理,而這種機(jī)制帶來(lái)了指令的亂序執(zhí)行。從而導(dǎo)致可見(jiàn)性問(wèn)題。

那么volatile會(huì)在cpu層面會(huì)增加內(nèi)存屏障,來(lái)解決cpu的亂序執(zhí)行帶來(lái)的可見(jiàn)性問(wèn)題

synchronize具有可見(jiàn)性嗎?

volatile是線程同步的輕量級(jí)實(shí)現(xiàn),所以volatile的性能要比synchronize好;volatile只能用于修飾變量,synchronize可以用于修飾方法、代碼塊。隨著jdk技術(shù)的發(fā)展,synchronize在執(zhí)行效率上會(huì)得到較大提升,所以synchronize在項(xiàng)目過(guò)程中還是較為常見(jiàn)的;

2.多線程訪問(wèn)volatile不會(huì)發(fā)生阻塞;而synchronize會(huì)發(fā)生阻塞;

3.volatile能保證變量在私有內(nèi)存和主內(nèi)存間的同步,但不能保證變量的原子性;synchronize可以保證變量原子性;

4.volatile是變量在多線程之間的可見(jiàn)性;synchronize是多線程之間訪問(wèn)資源的同步性;

對(duì)于volatile修飾的變量,可以解決變量讀時(shí)可見(jiàn)性問(wèn)題,無(wú)法保證原子性。對(duì)于多線程訪問(wèn)同一個(gè)實(shí)例變量還是需要加鎖同步。