java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解
上一節(jié)我們介紹過三個基本類型的原子類,這次我們來看一下數(shù)組類型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray。其中前兩個的使用方式差不多,AtomicReferenceArray因為他的參數(shù)為引用數(shù)組,所以跟前兩個的使用方式有所不同。
1.AtomicLongArray介紹
對于AtomicLongArray, AtomicIntegerArray我們還是只介紹一個,另一個使用方式大同小異。
我們先來看看AtomicLongArray的構造函數(shù)和方法:
構造函數(shù):
AtomicLongArray(int length) //創(chuàng)建給定長度的新 AtomicLongArray。
AtomicLongArray(long[] array) //創(chuàng)建與給定數(shù)組具有相同長度的新 AtomicLongArray,并從給定數(shù)組復制其所有元素。
方法:
long addAndGet(int i, long delta) //以原子方式將給定值添加到索引 i 的元素。
boolean compareAndSet(int i, long expect, long update) //如果當前值 == 預期值,則以原子方式將該值設置為給定的更新值。
long decrementAndGet(int i) //以原子方式將索引 i 的元素減1。
long get(int i) //獲取位置 i 的當前值。
long getAndAdd(int i, long delta) //以原子方式將給定值與索引 i 的元素相加。
long getAndDecrement(int i) //以原子方式將索引 i 的元素減 1。
long getAndIncrement(int i) //以原子方式將索引 i 的元素加 1。
long getAndSet(int i, long newValue) //以原子方式將位置 i 的元素設置為給定值,并返回舊值。
long incrementAndGet(int i) // 以原子方式將索引 i 的元素加1。
void lazySet(int i, long newValue)// 最終將位置 i 的元素設置為給定值。
int length() //返回該數(shù)組的長度。
void set(int i, long newValue) //將位置 i 的元素設置為給定值。
String toString() //返回數(shù)組當前值的字符串表示形式。
2.使用方式:
我們可以發(fā)現(xiàn)AtomicLongArray的使用方式和上一篇介紹的基本類型的原子類差不多,無非是換成了數(shù)組類型,另外方法里面的etAndAdd與ncrementAndGet我們要注意使用方式。
3.AtomicReferenceArray介紹
我們來看一下他的方法:
構造方法:
AtomicReferenceArray(E[] array) //創(chuàng)建與給定數(shù)組具有相同長度的新 AtomicReferenceArray,并從給定數(shù)組復制其所有元素。
AtomicReferenceArray(int length) // 創(chuàng)建給定長度的新 AtomicReferenceArray。
方法:
boolean compareAndSet(int i, E expect, E update) //如果當前值 == 預期值,則以原子方式將位置 i 的元素設置為給定的更新值。
E get(int i) //獲取位置 i 的當前值。
E getAndSet(int i, E newValue) // 以原子方式將位置 i 的元素設置為給定值,并返回舊值。
void lazySet(int i, E newValue) //最終將位置 i 的元素設置為給定值。
int length() //返回該數(shù)組的長度。
void set(int i, E newValue) // 將位置 i 的元素設置為給定值。
String toString() //返回數(shù)組當前值的字符串表示形式。
boolean weakCompareAndSet(int i, E expect, E update) // 如果當前值 == 預期值,則以原子方式將位置 i 的元素設置為給定的更新值。
由上我們可以看到AtomicReferenceArray與前兩個的方法相比少了很多。
下面我們通過一個小例子來看一下他的使用:
public class AtomicReferenceArrayTest {
public static void main(String[] args) {
Long[] l = new Long[4];
String[] s = new String[4];
int[] i = new int[4];
Integer[] in = new Integer[4];
AtomicReferenceArray atomicReferenceArray = new AtomicReferenceArray(l);
System.out.println(atomicReferenceArray.length());
System.out.println(atomicReferenceArray.get(2));
AtomicReferenceArray atomic = new AtomicReferenceArray(4);
atomic.set(0,432141);
atomic.set(2,"fsafefeq");
atomic.set(3,i);
System.out.println(atomic.toString());
}
}
輸出結果為:
exclude patterns:
4
null
[432141, null, fsafefeq, [I@357b2b99]Process finished with exit code 0
說明:
- 1.當我們使用AtomicReferenceArray(E[] array)這個構造方法傳入一個數(shù)組對象時,該數(shù)組對象必須是引用類型,int[]不可以,但是Integer[]的可以。
- 2.當我們使用AtomicReferenceArray(int length)這個構造函數(shù)的時候,只要為他指定了數(shù)組大小之后,你為數(shù)組的每一位設置什么值是沒有要求的,類似于Map的形式。
以上就是java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解的詳細內(nèi)容,更多關于JAVA (JUC原子類)的數(shù)組類型的資料請關注腳本之家其它相關文章!
相關文章
Java使用FilenameFilter查找出目錄下指定后綴的文件示例
這篇文章主要介紹了Java使用FilenameFilter查找出目錄下指定后綴的文件,結合實例形式分析了java基于FilenameFilter類的文件遍歷、查找相關操作技巧,需要的朋友可以參考下2019-10-10
Java Validation Api實現(xiàn)原理解析
這篇文章主要介紹了Java Validation Api實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
crawler4j抓取頁面使用jsoup解析html時的解決方法
crawler4j對response沒有指定編碼的頁面,解析成亂碼,很讓人煩惱,下面給出解決方法,需要的朋友可以參考下2014-04-04
Maven及Springboot配置JDK版本,編碼,源碼打包等方式
這篇文章主要介紹了Maven及Springboot配置JDK版本,編碼,源碼打包等方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringMVC使用@Valid注解進行數(shù)據(jù)驗證的方法
本篇文章主要介紹了SpringMVC使用@Valid注解進行數(shù)據(jù)驗證的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02

