JDK提供的原子類操作及原理

wjaning發表於2021-09-09

1,原子類介紹:

針對資料型別的操作,JDK提供的原子類來方便我們的執行緒安全控制。

所有的類儲存在 java.util.concurrent.atomic 包中

基本資料型別 AtomicInteger

陣列型別 AtomicIntegerArray

2,舉個使用的例子:

解決之前的 i++ 安全性問題

如何解決?

AtomicInteger count = new AtomicInteger(0);

count.incrementAndGet();//相當於count++,區別是這裡可以保證是原子操作

3,原理:

內部的原理是採用了CAS機制,大家可以透過觀察原始碼就可以發現

那麼什麼是CAS機制?

CAS有人翻譯為Compare And Set或Compare And Swap都是正確的。

在多執行緒併發執行的狀態下,鎖的狀態改變,基本都是使用CAS原理,它有一個比較彆扭的叫法“CPU硬體同步原語”,演算法是基於CPU硬體的,原子性操作,不會被其他執行緒打斷。

CAS的演算法,比較當前值和期望的值是否相等,如果相等,則將當前值賦予一個新值。

再比如修改一個Boolean的型別的變數的值,我們也可以採用

private AtomicBoolean atomicBoolean = new AtomicBoolean(false);

public void lock(){

    //期望是false,如果是false,則可以修改為true

    atomicBoolean.compareAndSet(false, true);

}



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2813794/,如需轉載,請註明出處,否則將追究法律責任。

相關文章