Java高併發程式設計筆記

2021-08-09 23:25:38 字數 526 閱讀 1554

jmm記憶體模型之-可見性:可見性是指當乙個執行緒修改了某乙個共享變數的值,其他執行緒是否能夠立即知道這個修改。

jmm記憶體模型之-有序性:有序性問題的原因是因為程式在執行時,可能會出現指令重排,重排後的指令的順序未必一致。

一條指令的執行可以分為很多步驟的:

簡單來說就是以下幾步:

1、取指if

2、解碼和取暫存器運算元id

3、執行或者有效位址計算ex

4、儲存器訪問mem

5、寫回wb

對於指令重排:

對於指令重排不可以違背的原則:

1、程式順序原則:乙個執行緒內保證語義的序列性。

2、volatile規則:volatile變數的寫,先發生於讀,這保證了volatile變數的可見性

3、鎖規則:解鎖必然發生在隨後的加鎖前

4、傳遞性:a先於b,b先於c,那麼a必然先於c

5、執行緒的所有操作先於執行緒的終結

6、執行緒的中斷先於被中斷執行緒的**

7、物件的建構函式執行、結束先於finalize方法

Java高併發程式設計讀書筆記

程序 程序是計算機彙總的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體 在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令 資料及其組織形式的描述,程序是程式的實體。執行緒是輕量...

Java高併發程式設計學習筆記1

執行緒的runnable狀態 已經具備執行條件,只等待cpu排程 萬事俱備只欠東風 1 thread類中得start方法啟動乙個執行緒,並且該執行緒進入了可執行態 runnabel 2 run方法和start方法的區別。3 線 正的執行邏輯在run方法中,通常我們把run方法稱為執行緒的執行單元。重...

Java高併發程式設計之CountDownLatch

儘管這是挺好的解決辦法,當絕對談不上最佳,本篇文章進一步講解更優的解決方案。使用latch 門閂 替代wait notify來進行通知,其好處是通訊方式簡單,同時也可以指定等待時間。countdownlatch不涉及鎖定,當count的值為零的時候當前執行緒繼續執行。當不涉及同步,只是涉及執行緒通訊...