勵志

勵志人生知識庫

原子操作原理

原子操作是指不會被執行緒調度機制打斷的操作,一旦開始,就一直運行到結束,中間不會有任何上下文切換(context switch)到另一個執行緒。這種操作是一個整體,不可再分,其順序不可以被打亂,也不可以被切割而只執行其中的一部分。在並發場景下,如果無法保證某些操作是原子的,數據就無法保持一致,可能導致系統不可用。

處理器保證從系統記憶體當中讀取或者寫入一個位元組是原子的,意思是當一個處理器讀取一個位元組時,其他處理器不能訪問這個位元組的記憶體地址。然而,處理器提供匯流排鎖定快取鎖定兩個機制來保證複雜記憶體操作的原子性。

Java中,一般使用鎖和循環CAS(Compare and Swap)方式來實現原子操作。CAS操作需要輸入兩個數值,一個舊值(期望操作前的值)和一個新值,在操作期間先比較舊值有沒有發生變化,如果沒有發生變化,才交換成新值,發生了變化則不交換。

總的來說,原子操作是並發編程中的一個重要概念,它可以幫助我們在多執行緒環境下保證數據的一致性和正確性。