1.可見性
多個執行緒訪問同一個變數時,一個執行緒修改了這個變數的值,其他執行緒能夠立即看到修改的值
happens-before
- 程式順序規則:一個執行緒中的每個操作,happens-before于該執行緒任意后續操作
- start()規則:如果執行緒A執行操作threadB.start(),那么A執行緒中threadB.start()happens-beforeB的任意操作
- join()規則:如果執行緒A執行操作thread.join(),那么執行緒B的任意操作happens-before于A從threadB.join()回傳
- volatile變數規則:對一個volatile域的寫,happens-before于任意后續對這個volatile域的讀
- 監視器鎖規則:對一個鎖(synchronized)的解鎖,happens-before于隨后對這個鎖的解鎖
- 傳遞性:如果A happens-before B,B happens-before C ,那么 A happens-before C
2.有序性
- 若在本執行緒內觀察,所有操作是有有序的
- 若在一個執行緒觀察另一個執行緒,所有操作時無序的
- 在JVM中,為了效率允許編譯器和處理器對指令進行重排序
3.原子性
一個執行緒執行一段代碼時不被打斷,要么都成功,要么都失敗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/76202.html
標籤:其他
下一篇:BLE 技術(五)--- Generic Access Profile + Security Manager(Core_v5.2)
