欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

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

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

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

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

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

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

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

i = i + 1;

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

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

廣告

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

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