Java記憶體模型
Java記憶體模型定義了一種多執行緒訪問Java記憶體的規范,
- Java記憶體模型將記憶體分為了主記憶體和作業記憶體,類的狀態也就是類之間共享的變數,是存盤在主記憶體中的,每 次Java執行緒用到這些主記憶體中的變數的時候,會讀一次主記憶體中的變數,并讓這些記憶體在自己的作業記憶體中有 一份拷貝,運行自己執行緒代碼的時候,用到這些變數,操作的都是自己作業記憶體中的那一份,在執行緒代碼執 行完畢之后,會將新的值更新到主記憶體中去
- 定義了幾個原子操作,用于操作主記憶體和作業記憶體中的變數
- 定義了volatile變數的使用規則
- happens-before即先行發生原則,定義了操作A必然先行發生于操作B的一些規則,比如在同一個執行緒內控制 流前面的代碼一定先行發生于控制流后面的代碼、一個釋放鎖unlock的動作一定先行發生于后面對于同一個 鎖進行鎖定lock的動作等等,只要符合這些規則,則不需要額外做同步措施,如果某段代碼不符合所有的 happens-before規則,則這段代碼一定是執行緒非安全的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259856.html
標籤:其他
上一篇:java多執行緒
下一篇:2.單例模式
