一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

再也不怕問我volatile關(guān)鍵字,你隨便問?。?!

 Java幫幫 2020-07-24

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

回答:

volatile是JVM提供的輕量級的同步機(jī)制

1.保證可見性

2.保證有序性,禁止指令重排

3.不保證原子性(需要借助synchronized或者CAS)


面試官問題:2.能不能詳細(xì)說下什么是內(nèi)存可見性?

回答:

一問到內(nèi)存的可見性,volatile相關(guān)的,直接就把JMM內(nèi)存模型搬出來好吧。先放圖,然后再表演。

以下是俺個人的回答,有不足或漏洞,歡迎大家更正指出!

所謂可見性,是指當(dāng)一條線程修改了共享變量的值,新值對于其他線程來說是可以立即得知的

每個線程都有自己獨(dú)立的工作區(qū)間,為了匹配CPU的運(yùn)行速度,他們不會直接從內(nèi)存中讀取數(shù)據(jù),而是將數(shù)據(jù)拷貝一份到CPU緩存中(即每個線程自己的工作內(nèi)存),他們之間的相互交互,是通過內(nèi)存來完成的。

根據(jù)JMM內(nèi)存模型的8大原子操作,每個線程在j將數(shù)據(jù)操作完stroe回主存之前,會加lock指令來鎖定內(nèi)存區(qū)域的緩存(緩存行鎖定),根據(jù)MESI緩存一致性協(xié)議,總線通過偵聽器發(fā)現(xiàn)數(shù)據(jù)被修改,會立即讓其他線程工作內(nèi)存中不一致的副本立即失效。

等到當(dāng)前線程將更改后的數(shù)據(jù)write回主存后,立即執(zhí)行unlock指令。

此時(shí),其他線程再重新讀取更新后的數(shù)據(jù),再拷貝到自己的工作內(nèi)存。總線偵聽機(jī)制會在總線上檢測線程的數(shù)據(jù),發(fā)現(xiàn)有線程做了更改時(shí)準(zhǔn)備store回主內(nèi)存時(shí),它就會立刻將其他線程工作內(nèi)存中的副本置位無效,然后從新到主存獲取更新后的值。

除了使用 volatile 關(guān)鍵字來保證內(nèi)存可見性之外,使用synchronized或Lock鎖也能保證變量的內(nèi)存可見性。只是相比而言使用 volatile關(guān)鍵字開銷更小,是輕量級的鎖。

這就是內(nèi)存可見性的原理。


面試官問題:3.volatile關(guān)鍵字是怎么保證有序性的?什么又是重排序呢?

回答:

使用volatile關(guān)鍵字修飾共享變量便可以禁止指令重排序。若用volatile修飾共享變量,在JVM底層volatile是采用“內(nèi)存屏障”來實(shí)現(xiàn)禁止特定類型的處理器重排序。加入volatile關(guān)鍵字時(shí),會多出一個lock前綴指令,lock前綴指令實(shí)際上相當(dāng)于一個內(nèi)存屏障(也成內(nèi)存柵欄),內(nèi)存屏障會提供3個功能:

1.它確保指令重排序時(shí)不會把其后面的指令排到內(nèi)存屏障之前的位置,也不會把前面的指令排到內(nèi)存屏障的后面;即在執(zhí)行到內(nèi)存屏障這句指令時(shí),在它前面的操作已經(jīng)全部完成;

2.它會強(qiáng)制將對緩存的修改操作立即寫入主存;

3.如果是寫操作,它會導(dǎo)致其他CPU中對應(yīng)的緩存行無效。

JMM具備一些先天的有序性,通過Happens-Before原則就可以保證的一定的有序性。


面試官問題:4.volatile能保證可見性和有序性,但是能保證原子性嗎?為什么?

回答:

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本欧美视频在线观看免费| 久久女同精品一区二区| 日韩中文字幕免费在线视频| 黄片三级免费在线观看| 日本东京热加勒比一区二区| 日本高清一道一二三区四五区| 日本高清不卡一二三区| 蜜桃传媒在线正在播放| 欧美不卡高清一区二区三区| 国产欧美日韩在线一区二区| 亚洲中文字幕视频一区二区| 日本人妻精品中文字幕不卡乱码 | 国产精品免费视频专区| 亚洲一区二区欧美在线| 后入美臀少妇一区二区| 好吊色欧美一区二区三区顽频| 久久碰国产一区二区三区| 九九热在线免费在线观看| 精品日韩国产高清毛片| 欧美极品欧美精品欧美| 国产av天堂一区二区三区粉嫩| 暴力三级a特黄在线观看| 午夜直播免费福利平台| 久久福利视频视频一区二区| 亚洲日本中文字幕视频在线观看| 天海翼高清二区三区在线| 日本东京热视频一区二区三区| 日韩精品一区二区三区含羞含羞草 | 91福利免费一区二区三区| 黑丝袜美女老师的小逼逼| 制服丝袜美腿美女一区二区| 中文字幕欧美精品人妻一区| 日本少妇中文字幕不卡视频| 久一视频这里只有精品| 最近中文字幕高清中文字幕无| 国产亚洲精品香蕉视频播放| 91亚洲人人在字幕国产| 欧美亚洲国产日韩一区二区| 免费在线成人激情视频| 高清一区二区三区大伊香蕉| 日韩中文字幕欧美亚洲|