atomic原子類介紹:
atomic 是指乙個操作是不可中斷的。即使是在多個執行緒一起執行的時候,乙個操作一旦開始,就不會被其他執行緒干擾。
分類:根據操作的資料型別,可以分為4類:
基本資料型別:
陣列型別
使用原子的方式更新陣列裡的某個元素
引用型別
物件的屬性修改型別
通過乙個簡單例子帶大家看一下基本資料型別原子類的優勢
①多執行緒環境不使用原子類保證執行緒安全(基本資料型別)
class test
public int getcount()
}
②多執行緒環境使用原子類保證執行緒安全(基本資料型別)
class test2
//使用atomicinteger之後,不需要加鎖,也可以實現執行緒安全。
public int getcount()
}
atomicinteger 類主要利用 cas (compare and swap) + volatile 和 native 方法來保證原子操作,從而避免 synchronized 的高開銷,執行效率大為提公升。 JUC包下的原子類的實現方法
class accountsafe implements account override public integer getbalance override public void withdraw integer amount 可以簡化為下面的方法 balance.addandget 1 am...
JUC 4 0 原子類 介紹及基本使用
在併發程式設計中,原子類也是經常使用的乙個工具,利用原子類,可以把一些操作變成乙個原子操作,在多執行緒的情況下不需要加鎖也可以保證執行緒安全 原子類的作用跟鎖是類似的,都是為了保證在併發環境下的執行緒安全,原子類相比於鎖,有一定的優勢 鎖的粒度更細 原子類可以把競爭範圍縮小到變數級別,通常我們手動加...
Java單例模式結合JUC原子類爆發的新想法
單例模式是23種設計模式中的一種,關於它的介紹,已經數不勝數了,一般網上的實現方式無非是什麼懶漢式,餓漢式,內部類,列舉,volatile加雙重校驗鎖等等,今天我又想到乙個新的實現方式,利用j.u.c提供的原子類,如下 class singleton public static singleton ...