建立和理解Java 併發的基礎

2021-06-17 14:17:03 字數 779 閱讀 2401

整理內容---部分來自書籍,部分來自網路 。

synchronizes-with:這個關係表示乙個行為在發生時,它首先把要操作的那些物件同主存同步完畢之後才繼續執行。

程式次序規則:在乙個執行緒內,按照**控制流順序,在前面的操作先行發生於後面的操作。

管程鎖定規則:乙個unlock操作先行發生於後面對同乙個鎖的lock操作。

volatile變數規則:對乙個volatile變數的寫操作先行發生於後面對這個變數的讀操作。

執行緒啟動規則:thread物件的start()方法先行發生於此執行緒的每個操作。

執行緒終止規則:執行緒中的所有操作都先行發生於對此執行緒的終止檢測。

執行緒中斷規則:對執行緒的interrupt()方法的呼叫先行發生於被中斷執行緒的**檢測中斷事件的發生。

物件終結過則:乙個物件的初始化完成先行發生於它的finalize()方法的開始。

傳遞性:如果操作a先行發生於操作b,操作b現象發生於操作c,那麼就可以得出操作a先行發生於操作c的結論。

時間上的先後順序與先行發生原則之間基本上沒有太大的關係。所以,在衡量併發安全問題的時候不要受到時間順序的干擾,一切都以先行發生原則為準。

執行緒對變數的所有操作(讀取,賦值等)都必須在工作記憶體中進行,而不能直接讀寫主記憶體的變數。不同的執行緒之間也無法直接訪問對方工作記憶體中的變數,執行緒間變數值的傳遞均需要通過主記憶體來完成。執行緒不能直接為主存中中欄位賦值,它會將值指定給工作記憶體中的變數副本(assign),完成後這個變數副本會同步到主儲存區(store-write),

至於何時同步過去,根據jvm實現系統決定.

JAVA併發程式設計的理解

併發程式設計時,必須考慮安全性問題,即執行緒安全,所謂執行緒安全就是可以同時被多個執行緒呼叫,呼叫者無須額外的操作,程式也不會出現錯誤的結果。要使程式是執行緒安全的,必須考慮以下2點 是否存在競態條件,常見的是那些先檢查後執行的操作行為,它的正確結果取決於運氣。避免錯誤結果的方法是保證操作的原子性,...

JAVA併發程式設計的理解

併發程式設計時,必須考慮安全性問題,即執行緒安全,所謂執行緒安全就是可以同時被多個執行緒呼叫,呼叫者無須額外的操作,程式也不會出現錯誤的結果。要使程式是執行緒安全的,必須考慮以下2點 是否存在競態條件,常見的是那些先檢查後執行的操作行為,它的正確結果取決於運氣。避免錯誤結果的方法是保證操作的原子性,...

java方法建立和過載

方法的定義 1 方法就是一段可重複呼叫的 段 2 定義格式 訪問修飾符 返回值型別 方法名 舉例 有返回值,無返回值,新增引數 package ds public class fa 方法的返回值型別,void不需要返回值,其他型別需要返回值 public void tell public intte...