什么是 Java 內存模型?


在了解什么是 Java 內存模型之前,先了解一下為什么要提出 Java 內存模型。

之前提到過並發編程有三大問題

  • CPU 緩存,在多核 CPU 的情況下,帶來了可見性問題
  • 操作系統對當前執行線程的切換,帶來了原子性問題
  • 譯器指令重排優化,帶來了有序性問題

為了解決並發編程的三大問題,提出了 JSR-133,新的 Java 內存模型,JDK 5 開始使用。

 

那么什么是 Java 內存模型呢?

現在說的 Java 內存模型,一般是指 JSR-133: Java Memory Model and Thread Specification Revision 規定的 Java 內存模型。

JSR-133 具體描述:jsr133.pdf

JSR-133 在 JCP 官網的具體描述

 

說明下

JSR:Java Specification Requests,Java 規范提案。

JCP:Java Community Process 是一個開放的國際組織,成立於1998年,主要由 Java 開發者以及被授權者組成,是使有興趣的各方參與定義 Java 的特征和未來版本的正式過程。

 

簡單總結下

  • Java 內存模型是 JVM 的一種規范
  • 定義了共享內存在多線程程序中讀寫操作行為的規范
  • 屏蔽了各種硬件和操作系統的訪問差異,保證了 Java 程序在各種平台下對內存的訪問效果一致
  • 解決並發問題采用的方式:限制處理器優化和使用內存屏障
  • 增強了三個同步原語(synchronized、volatile、final)的內存語義
  • 定義了 happens-before 規則

 

參考:
1、https://baike.baidu.com/item/JSR
2、https://baike.baidu.com/item/JCP
3、https://zh.wikipedia.org/zh-hans/JCP

 

  

來一道刷了進BAT的面試題?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM