JMM八大操作 voliate可見性原理

2021-10-05 20:11:16 字數 1008 閱讀 7842

知識儲備:

計算機cpu快取

計算機多核處理過程

計算機主存知識

執行緒概念

計算機指令優化重排序

記憶體模型-同步八種操作

1:lock:    把主記憶體變數標識為一條執行緒獨佔,此時不允許其他執行緒對此變數進行讀寫。

2:unlock:解鎖乙個主記憶體變數。

3:read:   把乙個主記憶體變數值讀入到執行緒的工作記憶體,強調的是讀入這個過程。

4:load:   把read到變數值儲存到執行緒工作記憶體中作為變數副本,強調的是讀入的值的儲存過程。

5:use:    執行緒執行期間,把工作記憶體中的變數值傳給位元組碼執行引擎。

6:assign(賦值):位元組碼執行引擎把運算結果傳回工作記憶體,賦值給工作記憶體中的結果變數。

7:store: 把工作記憶體中的變數值傳送到主記憶體,強調傳送的過程。

8:write: 把store傳送進來的變數值寫入主記憶體的變數中,強調儲存的過程。

同步規則分析:

1)不允許乙個執行緒無原因地(沒有發生過任何assign操作)把資料從工作記憶體同步會主記憶體中

2)乙個新的變數只能在主記憶體中誕生,不允許在工作記憶體中直接使用乙個未被初始化(load或者assign)的變數。

即就是對乙個變數實施use和store操作之前,必須先自行assign和load操作。

3)乙個變數在同一時刻只允許一條執行緒對其進行lock操作,但lock操作可以被同一執行緒重複執行多次,多次執行lock後,只有執行相同次數的unlock操作,變數才會被解鎖。lock和unlock必須成對出現。

4)如果對乙個變數執行lock操作,將會清空工作記憶體中此變數的值,在執行引擎使用這個變數之前需要重新執行load或assign操作初始化變數的值。

5)如果乙個變數事先沒有被lock操作鎖定,則不允許對它執行unlock操作;也不允許去unlock乙個被其他執行緒鎖定的變數。

6)對乙個變數執行unlock操作之前,必須先把此變數同步到主記憶體中(執行store和write操作)

時間倉促後續優化

八大演算法思想

下面介紹一下最常用的八大演算法思想 一 比較 笨 的列舉演算法 基本思路 1 確定列舉物件 列舉範圍和判定條件 2 注意列舉可能的解,驗證每個節是否是問題的解 列舉演算法步驟 1 題解的可能範圍,補能遺漏任何乙個真正解,也要避免有重複 2 判斷是否真正解的方法 3 使可能解的範圍降至最小,以便提高解...

寶潔八大問

star原則,即situation 情景 task 任務 action 行動 和result 結果 一 請你舉乙個具體的例子,說明你給自己確定了乙個很高的目標,然後達到這個目標。目標 執行力 二 請舉例說明你在一項團隊活動中如何團結他人,並且起到領導者的作用,並帶領團隊最終獲得所希望的結果。領導力三...

SOA實現八大陷阱

作者thomas erl譯者林伯仲發布於 2007年6月8日 上午12時30分 社群 soa主題 故事和案例分析,架構 隨著soa漸成it潮流,越來越多的soa專案啟動了。有些專案徹底失敗了,有些專案則勉強成功了。如何吸取這些失敗專案的教訓,並形成自己規劃soa路線圖所需的遠見與策略,這將是未來so...