Java中原子操作的實現原理
原子操作就是不可被中斷的一個或一系列操作,看看Java是怎麼實現原子操作的。
CPU實現原子操作
處理器通過對總線加鎖或者緩存行加鎖的方式實現多個處理器之間的原子操作。
通過對總線加鎖實現原子性,現在都是多處理器,對於共享變量的讀寫操作,如果不加限制,可導致數據的不一致,比如處理器把值改成A,另外的處理器又把值改成B,導致不是我們需要的結果。為了解決這個問題,處理器可以使用總線鎖,當一個處理器鎖住總線的時候,其他處理器處於阻塞狀態。這樣能解決問題,但是代價是很大的。通過對緩存行加鎖實現原子性,為了保證原子性,在同一時間,只要保證對於某個內存地址的原子操作即可。緩存一致性機制阻止同時修改由兩個及以上處理器緩存的內存區域數據,當其他處理器回寫已被鎖定的緩存行數據時,會使緩存行無效。Java的原子操作
Java使用鎖機制和CAS來實現原子操作。
每天都要進步一點點,哪怕一丁點......