執行緒安全性保證---JMM特性詳解

weixin_43280948發表於2020-10-19
概述

JVM
 Java虛擬機器,執行程式的實體是執行緒,每個執行緒建立時JVM都會為其建立一個工作記憶體(稱作棧空間)
JMM
 Java記憶體模型,是一種抽象的概念,描述的是一組規範,通過這組規範定義了;程式中各個變數(包括例項欄位,靜態欄位,構成陣列物件的元素)的訪問方式

JMM關於同步的規定

1、執行緒加鎖前,必須讀取主記憶體的最新值到自己的工作記憶體
2、執行緒解鎖前,必須把共享變數的值重新整理回主記憶體
3、加鎖解鎖是同一把鎖

JMM三特性

可見性:主實體記憶體的值只要被修改,其他執行緒馬上會獲取通知的機制

原子性:某個執行緒正在做某個具體業務時,不允許加塞或者被分割,需要整 體完成,要麼同時成功,要麼同時失敗

有序性:經過指令重排,位元組碼指令的順序可能與我們原始碼順序不一致,處理器在指令重排時必須要考慮資料之間的依賴性
1 > 單執行緒中最終指令執行結果和程式順序執行結果一致,
2 > 在多執行緒中結果無法預測,所以必須保證執行緒執行的有序性
在這裡成的撒描述

<

相關文章