中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

服務(wù)器網(wǎng)站部署嘉興網(wǎng)絡(luò)推廣

服務(wù)器網(wǎng)站部署,嘉興網(wǎng)絡(luò)推廣,臺(tái)州公司做網(wǎng)站,wordpress kswapd0一、Java內(nèi)存模型(JMM)是什么? Java內(nèi)存模型(Java Memory Model, JMM)是Java多線程編程中共享內(nèi)存的訪問規(guī)則,定義了線程如何與主內(nèi)存(Main Memory)和工作內(nèi)存(Work Mem…
一、Java內(nèi)存模型(JMM)是什么?

Java內(nèi)存模型(Java Memory Model, JMM)是Java多線程編程中共享內(nèi)存的訪問規(guī)則,定義了線程如何與主內(nèi)存(Main Memory)和工作內(nèi)存(Work Memory)交互,解決多線程并發(fā)中的原子性、可見性、有序性問題。確保多線程程序在不同架構(gòu)的處理器和內(nèi)存系統(tǒng)上都能正確運(yùn)行。


二、核心概念
  1. 主內(nèi)存與工作內(nèi)存

    • 主內(nèi)存:所有線程共享的內(nèi)存區(qū)域,存儲(chǔ)變量(實(shí)例字段、靜態(tài)字段等),類似于計(jì)算機(jī)中的物理內(nèi)存。

    • 工作內(nèi)存:每個(gè)線程私有的內(nèi)存區(qū)域,存儲(chǔ)主內(nèi)存變量的副本。

    • 交互規(guī)則:線程只能操作工作內(nèi)存中的變量副本,修改后需同步回主內(nèi)存。

  2. 原子性、可見性、有序性

    • 原子性:操作不可分割(如AtomicInteger),要不全部完成,要不全部不做。

      1. 基本數(shù)據(jù)類型的賦值操作(如int a = 10)。

      2. 使用synchronized關(guān)鍵字或Lock接口實(shí)現(xiàn)的同步代碼塊。

        public class Counter {private int count = 0;
        ?public synchronized void increment() {count++;}
        }
    • 可見性:一個(gè)線程對(duì)變量的修改能被其他線程立刻看到(volatile、synchronized)。

      1. volatile關(guān)鍵字:確保變量的修改立即刷新到主內(nèi)存,其他線程讀取時(shí)能獲取最新值。

      2. synchronized關(guān)鍵字:線程退出同步塊時(shí),會(huì)將工作內(nèi)存中的變量寫回主內(nèi)存。

        public class VolatileExample {private volatile boolean running = true;
        ?public void stop() {running = false;}
        ?public void run() {while (running) {// do something}}
        }
    • 有序性:代碼執(zhí)行順序與程序順序一致(防止指令重排序)。

      1. happens-before原則:定義了操作的先后順序。

      2. 內(nèi)存屏障:防止指令重排序。

  3. Happens-Before原則 JMM定義的保證有序性的規(guī)則,若操作A happens-before 操作B,則A的結(jié)果對(duì)B可見。 常見規(guī)則:

    • 程序順序規(guī)則 :在單線程中,代碼的執(zhí)行順序符合書寫順序。

    • volatile變量規(guī)則

    • 鎖規(guī)則(synchronizedLock

    • 線程啟動(dòng)/終止規(guī)則

    • 傳遞性規(guī)則


三、關(guān)鍵機(jī)制
  1. volatile關(guān)鍵字

    • 保證變量的可見性:直接讀寫主內(nèi)存,禁止緩存。

    • 禁止指令重排序:通過插入內(nèi)存屏障(Memory Barrier)。

    • 示例:雙檢鎖單例模式中的volatile修飾實(shí)例對(duì)象。

  2. synchronized與鎖

    • 通過監(jiān)視器鎖(Monitor)實(shí)現(xiàn)原子性和可見性。

    • 線程解鎖前必須將變量同步回主內(nèi)存。

  3. final關(guān)鍵字

    • 構(gòu)造函數(shù)中對(duì)final域的寫入,與后續(xù)引用賦值操作不會(huì)被重排序。

    • 確保其他線程看到final變量時(shí),其初始化已完成。

  4. 并發(fā)工具類

    如CountDownLatch、CyclicBarrier等,用于更復(fù)雜的線程同步。


四、常見問題與面試考點(diǎn)
  1. volatile能否保證原子性?

    • 不能。volatile僅保證讀寫操作的原子性,但復(fù)合操作(如i++)仍需同步。

  2. DCL(雙檢鎖)單例模式為什么要加volatile?

    • 防止指令重排序?qū)е缕渌€程獲取未初始化完成的對(duì)象。

  3. synchronized和ReentrantLock的區(qū)別?

    • synchronized是JVM內(nèi)置鎖,自動(dòng)釋放;ReentrantLock需手動(dòng)加鎖/解鎖,支持公平鎖、條件變量。

  4. 什么是內(nèi)存可見性問題?如何解決?

    • 線程A修改變量后未及時(shí)同步到主內(nèi)存,線程B讀取舊值。

    • 解決:volatile、synchronized、Lock。

  5. 指令重排序的典型場(chǎng)景?

    • 單例模式初始化:new Object()可能被拆分為分配內(nèi)存、初始化對(duì)象、賦值引用三步,重排序后導(dǎo)致空指針。

  6. 什么是“線程安全的發(fā)布”?

    • 對(duì)象在構(gòu)造完成后才能被其他線程訪問。

    • 方式:volatile、靜態(tài)初始化塊、final域、線程安全容器(如ConcurrentHashMap)。


jJ五、代碼示例:內(nèi)存可見性問題
public class VisibilityDemo {// 不加volatile可能導(dǎo)致死循環(huán)private static volatile boolean flag = true;
?public static void main(String[] args) throws InterruptedException {new Thread(() -> {while (flag) {} // 線程可能讀取到舊的flag值System.out.println("Thread stopped.");}).start();
?Thread.sleep(1000);flag = false; // 主線程修改flag}
}

六、面試總結(jié)
  1. 必考知識(shí)點(diǎn)

    • volatile的作用與原理

    • synchronized的底層實(shí)現(xiàn)(Monitor、鎖升級(jí))

    • Happens-Before原則的規(guī)則

    • 指令重排序與內(nèi)存屏障

  2. 加分回答

    • 結(jié)合JMM分析ConcurrentHashMap的線程安全設(shè)計(jì)。

    • 對(duì)比JMM與物理內(nèi)存模型(CPU緩存、MESI協(xié)議)。

掌握J(rèn)MM是寫出高并發(fā)代碼的基礎(chǔ),也是大廠面試的必考領(lǐng)域!

http://www.risenshineclean.com/news/37307.html

相關(guān)文章:

  • 好創(chuàng)意的設(shè)計(jì)網(wǎng)站最大免費(fèi)廣告發(fā)布平臺(tái)
  • 找人做網(wǎng)站排名優(yōu)化山西seo排名廠家
  • 網(wǎng)站開發(fā)的著作權(quán)和版權(quán)進(jìn)一步優(yōu)化落實(shí)
  • 教育網(wǎng)站賞析seo網(wǎng)站分析報(bào)告
  • 西安網(wǎng)站優(yōu)化百度seo推廣軟件
  • 英國有哪些做折扣的網(wǎng)站有哪些seo外包顧問
  • 免費(fèi)發(fā)布招聘的網(wǎng)站愛站seo
  • html在wordpress中的作用刷關(guān)鍵詞優(yōu)化排名
  • 響應(yīng)式網(wǎng)站管理win7優(yōu)化軟件
  • 電子商務(wù)網(wǎng)站建設(shè)的一般步驟有重慶人力資源和社會(huì)保障網(wǎng)
  • wordpress的用戶名密碼網(wǎng)站優(yōu)化seo培
  • 郴州建設(shè)網(wǎng)站贛州網(wǎng)站seo
  • 杭州外貿(mào)網(wǎng)站制作網(wǎng)推資源渠道
  • 做網(wǎng)站用哪個(gè)office推廣普通話文字內(nèi)容
  • 類似WordPress的Pythonseo網(wǎng)站優(yōu)化工具大全
  • 附近做app的公司重慶seo論壇
  • 網(wǎng)站建設(shè)經(jīng)費(fèi)立項(xiàng)報(bào)告網(wǎng)絡(luò)營銷發(fā)展方案策劃書
  • 那個(gè)網(wǎng)站可以做視頻app制作的企業(yè)網(wǎng)站建設(shè)方案模板
  • 網(wǎng)站要交錢嗎電腦培訓(xùn)學(xué)校哪家好
  • 手機(jī)微網(wǎng)站怎么做的網(wǎng)絡(luò)軟文營銷案例3篇
  • 西安網(wǎng)站建設(shè)公司云網(wǎng)北京網(wǎng)站優(yōu)化排名推廣
  • 張家港高端網(wǎng)站制作百度總部公司地址在哪里
  • 蘇州 網(wǎng)站 建設(shè) 公司微信營銷模式有哪些
  • 做企業(yè)網(wǎng)站比較好的公司互動(dòng)營銷案例都有哪些
  • 建筑工程網(wǎng)站源碼市場(chǎng)營銷證書含金量
  • 天津高端品牌網(wǎng)站建設(shè)企業(yè)培訓(xùn)課程名稱大全
  • 網(wǎng)站開發(fā)畢業(yè)論文范文微博推廣方法有哪些
  • 自適應(yīng)網(wǎng)站什么做2022今天剛剛發(fā)生地震了
  • 哈爾濱住房和城鄉(xiāng)建設(shè)廳官方網(wǎng)站如何軟件網(wǎng)站優(yōu)化公司
  • wordpress 數(shù)據(jù)庫青島網(wǎng)站關(guān)鍵詞排名優(yōu)化