詳解Java面試官最愛(ài)問(wèn)的volatile關(guān)鍵字-創(chuàng)新互聯(lián)

本文向大家分享的主要內(nèi)容是Java面試中一個(gè)常見(jiàn)的知識(shí)點(diǎn):volatile關(guān)鍵字。本文詳細(xì)介紹了volatile關(guān)鍵字的方方面面,希望大家在閱讀過(guò)本文之后,能完美解決volatile關(guān)鍵字的相關(guān)問(wèn)題。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比古藺網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式古藺網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋古藺地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

 在Java相關(guān)的崗位面試中,很多面試官都喜歡考察面試者對(duì)Java并發(fā)的了解程度,而以volatile關(guān)鍵字作為一個(gè)小的切入點(diǎn),往往可以一問(wèn)到底,把Java內(nèi)存模型(JMM),Java并發(fā)編程的一些特性都牽扯出來(lái),深入地話還可以考察JVM底層實(shí)現(xiàn)以及操作系統(tǒng)的相關(guān)知識(shí)。 下面我們以一次假想的面試過(guò)程,來(lái)深入了解下volitile關(guān)鍵字吧!

面試官: Java并發(fā)這塊了解的怎么樣?說(shuō)說(shuō)你對(duì)volatile關(guān)鍵字的理解

就我理解的而言,被volatile修飾的共享變量,就具有了以下兩點(diǎn)特性:

1.保證了不同線程對(duì)該變量操作的內(nèi)存可見(jiàn)性;
2.禁止指令重排序

面試官: 能不能詳細(xì)說(shuō)下什么是內(nèi)存可見(jiàn)性,什么又是重排序呢?

這個(gè)聊起來(lái)可就多了,我還是從Java內(nèi)存模型說(shuō)起吧。 Java虛擬機(jī)規(guī)范試圖定義一種Java內(nèi)存模型(JMM),來(lái)屏蔽掉各種硬件和操作系統(tǒng)的內(nèi)存訪問(wèn)差異,讓Java程序在各種平臺(tái)上都能達(dá)到一致的內(nèi)存訪問(wèn)效果。簡(jiǎn)單來(lái)說(shuō),由于CPU執(zhí)行指令的速度是很快的,但是內(nèi)存訪問(wèn)的速度就慢了很多,相差的不是一個(gè)數(shù)量級(jí),所以搞處理器的那群大佬們又在CPU里加了好幾層高速緩存。 在Java內(nèi)存模型里,對(duì)上述的優(yōu)化又進(jìn)行了一波抽象。JMM規(guī)定所有變量都是存在主存中的,類似于上面提到的普通內(nèi)存,每個(gè)線程又包含自己的工作內(nèi)存,方便理解就可以看成CPU上的寄存器或者高速緩存。所以線程的操作都是以工作內(nèi)存為主,它們只能訪問(wèn)自己的工作內(nèi)存,且工作前后都要把值在同步回主內(nèi)存。 這么說(shuō)得我自己都有些不清楚了,拿張紙畫(huà)一下:

在線程執(zhí)行時(shí),首先會(huì)從主存中read變量值,再load到工作內(nèi)存中的副本中,然后再傳給處理器執(zhí)行,執(zhí)行完畢后再給工作內(nèi)存中的副本賦值,隨后工作內(nèi)存再把值傳回給主存,主存中的值才更新。 使用工作內(nèi)存和主存,雖然加快的速度,但是也帶來(lái)了一些問(wèn)題。比如看下面一個(gè)例子:

i = i + 1;

分享題目:詳解Java面試官最愛(ài)問(wèn)的volatile關(guān)鍵字-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://muchs.cn/article22/psocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站收錄、營(yíng)銷型網(wǎng)站建設(shè)微信公眾號(hào)、軟件開(kāi)發(fā)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)