併發程式設計基礎底層原理學習(二)

2022-10-10 14:45:08 字數 379 閱讀 5333

程序

程序就是應用程式在記憶體中分配的空間,也就是正在執行的程式,各個程序之間互不干擾。同時程序儲存著程式每乙個時刻執行的狀態。程序的兩個基本元素是程式**和與**關聯的資料集。程序執行的任意時刻包含了以下元素:

狀態:若程序正在執行,則程序處於執行態

優先順序:相對於其他程序的優先順序

上下文資料:程序執行時處理器的暫存器中的資料

執行緒

上圖展示了執行緒在執行的生命週期中6種不同的狀態,在給定的乙個時刻,執行緒只能處於其中的乙個狀態。

程序和執行緒的區別

synchronized底層原理學習

這個是以sychronized修飾物件進行分析,假設使用了a物件進行加鎖,那麼a物件就是鎖,a物件包含有物件頭 資料和填充組成,其中物件頭包含mark word和型別指標,mark word會指向乙個監視器物件 指向監視器的引用 監視器物件包含有執行緒持有者和計數器等資訊。mark word包括有物...

併發程式設計 volatile底層實現原理

解決可見性使用快取一致性。防止指令重排序使用記憶體屏障,保證有序性。有volatile變數修飾的共享變數,編譯時會有lock字首。lock字首指令會引起處理器快取回寫到記憶體。匯流排鎖 快取鎖 乙個處理器的快取回寫到記憶體會導致其他處理器的快取無效。mesi 嗅探 處理器上有一套完整的協議,來保證 ...

HashMap底層實現原理(學習筆記)

看了一上午,原始碼看的頭疼,果斷放棄,放個鏈結吧 jdk1.8原始碼解析 只記錄下理解的幾個知識點 1.實現介面 map,2.hashmap是陣列 鍊錶的形式實現的,使用hash來計算在陣列的索引位置,再在鍊錶中使用equals來判斷位置。3.key和value都可以為null 4.和hashtab...