成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:說一下Java的共享內存模型

開發 前端
架構

前言

目前正在出一個Java多線程專題長期系列教程,從入門到進階含源碼解讀, 篇幅會較多, 喜歡的話,給個關注?? ~ 本篇內容篇純理論一點

并發編程模型

我們之前給大家講了多線程的一些知識,首先我們要知道的是在并發編程模型下會產生兩大問題

  • 線程之間如何通信
  • 線程之間如何同步

解決這兩個問題主要有兩種并發模型:

  • 消息傳遞模型
  • 共享內存模型

那么它們是如何解決的呢?

消息傳遞模型

如何通信 ?

線程之間沒有公共狀態,必須通過發消息來顯式通信

如何同步 ?

發消息本身就是同步的,因此它是隱式的

共享內存模型

如何通信 ?

線程之間共享程序的公共狀態,通過讀寫內存中的公共狀態來進行隱式通信

如何同步 ?

需要顯示指定線程之間互斥執行

在Java中使用的是第二種,共享內存并發模型的方式

Java內存模型結構

首先說一下運行時數據區,主要分為兩類

  • 線程共享區,主要包含方法區和堆
  • 線程私有區,主要包含 虛擬機棧,本地方法棧,程序計數器

對于每一個線程來說,棧都是私有的,堆是共享的,所以棧中的變量,比如局部變量,方法定義參數、異常處理器參數,它們都不是共有的,所以內存之間是不可見的,所以也不收內存模型影響,而堆中的變量時共享的,所以又叫共享變量, 內存可見性是針對共享變量

堆中一定就可見性嗎

堆中也會出現內存不可見的問題,怎么產生的呢?這是因為現代計算機為了高效,往往會在高速緩存區中緩存共享變量,因為cpu訪問緩存區比訪問內存要快得多。

所謂內存不可見性,就是線程對某個共享變量在線程自己的緩沖中存在副本的時候對主內存中共享變量的值是不可見的,看不見主存中的值。線程操作一個共享變量時,它首先從主存中拉取并復制一份變量放置到自己的工作內存中,然后在工作內存中對變量進行修改,處理完之后將工作內存中的值重新寫回到主存中。所以在這個過程中,如果在緩存失效之前立即命中,就會導致更新過的主存中值不一致的問題

在Java中,每個線程都有自己的本地內存,存儲了該線程以讀、寫共享變量的副本,它是一個抽象的概念,線程之間的通信有內存模型控制,簡稱JMM

  • 所有的共享變量都存在主內存中。
  • 每個線程都保存了一份該線程使用到的共享變量的副本。

所以「線程間通信必須經過主內存」,JMM規定,「線程對共享變量的所有操作都必須在自己的本地內存中進行,不能直接從主內存中讀取」。

Java中的volatile關鍵字可以保證多線程操作共享變量的可見性以及禁止指令重排序,synchronized關鍵字不僅保證可見性,同時也保證了原子性(互斥性)。在更底層,JMM通過內存屏障來實現內存的可見性以及禁止重排序。為了程序員的方便理解,提出了happens-before,它更加的簡單易懂,從而避免了程序員為了理解內存可見性而去學習復雜的重排序規則以及這些規則的具體實現方法。

結束語

本節內容可能不像之前那么好理解,比較抽象,所以本文也有不足的地方,大家自己可以多查查一些資料,綜合理解。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-07-28 10:08:19

類加載代碼塊面試

2023-09-12 14:56:13

MyBatis緩存機制

2023-02-18 13:34:14

Nacos健康檢查機制

2022-06-06 15:33:20

線程Java釋放鎖

2025-03-10 07:05:07

2023-02-08 08:32:41

輪詢鎖

2023-12-29 13:45:00

2024-01-29 10:08:11

零拷貝Zero-copyCPU 拷貝

2024-02-21 16:42:00

2024-02-27 15:23:48

RedLock算法Redis

2020-07-30 07:58:36

加密算法

2023-01-30 15:39:40

GETHTTP

2021-06-02 11:25:18

線程池Java代碼

2023-11-29 08:00:53

JavaTreeMap底層

2021-11-27 08:13:13

Final 面試

2024-02-22 15:36:23

Java內存模型線程

2020-08-07 15:15:01

Java內存泄漏面試

2023-02-07 06:47:58

JVM 模塊Java 虛擬機

2021-04-19 18:56:58

大數字符串運算

2021-08-28 09:06:11

Dubbo架構服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久亚洲 | 青娱乐一区二区 | 成人免费久久 | 欧美一级久久 | 国产乱码一区 | 极情综合网| 免费能直接在线观看黄的视频 | av黄色在线 | 欧美美乳| 午夜欧美一区二区三区在线播放 | 欧美xxxⅹ性欧美大片 | 亚洲黄色在线免费观看 | www.青青草 | 午夜精品久久久久久久久久久久久 | 黄网址在线观看 | 欧美极品一区二区 | 亚洲精品一区二区在线观看 | 一区二区三区四区不卡 | 成人av影院 | 日韩精品成人免费观看视频 | 一级毛片视频在线观看 | a在线视频观看 | 国产一区二区三区在线 | 国产小u女发育末成年 | 成人国产精品久久 | 色视频网站 | 在线精品国产 | 亚洲福利在线观看 | 日日操视频 | 青娱乐自拍| 在线不卡一区 | 一区二区播放 | 久久久久国产精品午夜一区 | 男女精品久久 | 2018国产大陆天天弄 | 中文字幕男人的天堂 | 国产精品久久久久一区二区三区 | 亚洲精品一区二区三区中文字幕 | 久久99精品视频 | 成人午夜精品 | 国产乱码精品一区二区三区五月婷 |