欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解

 更新時間:2020年07月03日 11:03:50   作者:rickiyang  
這篇文章主要介紹了JAVA JUC原子類 數(shù)組類型詳解的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下

上一節(jié)我們介紹過三個基本類型的原子類,這次我們來看一下數(shù)組類型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray。其中前兩個的使用方式差不多,AtomicReferenceArray因為他的參數(shù)為引用數(shù)組,所以跟前兩個的使用方式有所不同。

1.AtomicLongArray介紹

對于AtomicLongArray, AtomicIntegerArray我們還是只介紹一個,另一個使用方式大同小異。

我們先來看看AtomicLongArray的構(gòu)造函數(shù)和方法:

構(gòu)造函數(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) //如果當前值 == 預期值,則以原子方式將該值設(shè)置為給定的更新值。
     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 的元素設(shè)置為給定值,并返回舊值。
     long incrementAndGet(int i)       // 以原子方式將索引 i 的元素加1。
     void lazySet(int i, long newValue)// 最終將位置 i 的元素設(shè)置為給定值。
     int length()                      //返回該數(shù)組的長度。
     void set(int i, long newValue)    //將位置 i 的元素設(shè)置為給定值。
     String toString()                 //返回數(shù)組當前值的字符串表示形式。

2.使用方式:

我們可以發(fā)現(xiàn)AtomicLongArray的使用方式和上一篇介紹的基本類型的原子類差不多,無非是換成了數(shù)組類型,另外方法里面的etAndAdd與ncrementAndGet我們要注意使用方式。

3.AtomicReferenceArray介紹

我們來看一下他的方法:

構(gòu)造方法:

AtomicReferenceArray(E[] array) //創(chuàng)建與給定數(shù)組具有相同長度的新 AtomicReferenceArray,并從給定數(shù)組復制其所有元素。
AtomicReferenceArray(int length) // 創(chuàng)建給定長度的新 AtomicReferenceArray。
方法:
boolean compareAndSet(int i, E expect, E update) //如果當前值 == 預期值,則以原子方式將位置 i 的元素設(shè)置為給定的更新值。
     E get(int i)                    //獲取位置 i 的當前值。
     E getAndSet(int i, E newValue)  // 以原子方式將位置 i 的元素設(shè)置為給定值,并返回舊值。
     void lazySet(int i, E newValue) //最終將位置 i 的元素設(shè)置為給定值。
     int length()                    //返回該數(shù)組的長度。
     void set(int i, E newValue)     // 將位置 i 的元素設(shè)置為給定值。
     String toString()               //返回數(shù)組當前值的字符串表示形式。
     boolean weakCompareAndSet(int i, E expect, E update) // 如果當前值 == 預期值,則以原子方式將位置 i 的元素設(shè)置為給定的更新值。

由上我們可以看到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());
  }
 }

輸出結(jié)果為:

exclude patterns:
4
null
[432141, null, fsafefeq, [I@357b2b99]

Process finished with exit code 0

說明:

  1. 1.當我們使用AtomicReferenceArray(E[] array)這個構(gòu)造方法傳入一個數(shù)組對象時,該數(shù)組對象必須是引用類型,int[]不可以,但是Integer[]的可以。
  2. 2.當我們使用AtomicReferenceArray(int length)這個構(gòu)造函數(shù)的時候,只要為他指定了數(shù)組大小之后,你為數(shù)組的每一位設(shè)置什么值是沒有要求的,類似于Map的形式。

以上就是java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解的詳細內(nèi)容,更多關(guān)于JAVA (JUC原子類)的數(shù)組類型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Idea中Springboot熱部署無效問題解決

    Idea中Springboot熱部署無效問題解決

    這篇文章主要介紹了Idea中Springboot熱部署無效問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • easyExcel分批導入文件方式

    easyExcel分批導入文件方式

    這篇文章主要介紹了easyExcel分批導入文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Jenkins安裝多個jdk版本并在項目中選擇對應(yīng)jdk版本

    Jenkins安裝多個jdk版本并在項目中選擇對應(yīng)jdk版本

    在使用jenkins構(gòu)建項目時會遇到不同的job需要配置不同版本的jdk,下面這篇文章主要給大家介紹了關(guān)于Jenkins安裝多個jdk版本并在項目中選擇對應(yīng)jdk版本的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Spring Security6 最新版配置及實現(xiàn)動態(tài)權(quán)限管理

    Spring Security6 最新版配置及實現(xiàn)動態(tài)權(quán)限管理

    Spring Security 在最近幾個版本中配置的寫法都有一些變化,很多常見的方法都廢棄了,并且將在未來的 Spring Security7 中移除,因此又補充了一些新的內(nèi)容,重新發(fā)一下,供各位使用 Spring Security 的小伙伴們參考,需要的朋友可以參考下
    2024-03-03
  • idea創(chuàng)建spring boot項目及java版本只能選擇17和21的問題

    idea創(chuàng)建spring boot項目及java版本只能選擇17和21的問題

    這篇文章主要介紹了idea創(chuàng)建spring boot項目及java版本只能選擇17和21的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Java深入分析了解平衡二叉樹

    Java深入分析了解平衡二叉樹

    平衡二叉樹又被稱為AVL樹(有別于AVL算法),且具有以下性質(zhì):它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。本文將詳解介紹一下平衡二叉樹的原理與實現(xiàn),需要的可以參考一下
    2022-06-06
  • Java初級必看的數(shù)據(jù)類型與常量變量知識點

    Java初級必看的數(shù)據(jù)類型與常量變量知識點

    這篇文章主要給大家介紹了關(guān)于Java初級必看的數(shù)據(jù)類型與常量變量知識點的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 基于SSM框架+Javamail發(fā)送郵件的代碼實例

    基于SSM框架+Javamail發(fā)送郵件的代碼實例

    本篇文章主要介紹了基于SSM框架+Javamail發(fā)送郵件的代碼實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • Elasticsearch term 查詢之精確值搜索功能實現(xiàn)

    Elasticsearch term 查詢之精確值搜索功能實現(xiàn)

    term查詢是Elasticsearch中用于精確值搜索的一種基本方式,通過了解 term 查詢的工作原理和使用方法,你可以更好地利用 Elasticsearch 進行結(jié)構(gòu)化數(shù)據(jù)的搜索和分析,本文將詳細介紹 term 查詢的工作原理、使用場景以及如何在 Elasticsearch 中應(yīng)用它,感興趣的朋友一起看看吧
    2024-06-06
  • Java藍橋杯實現(xiàn)線段和點

    Java藍橋杯實現(xiàn)線段和點

    本文主要介紹Java藍橋杯實現(xiàn)線段和點的內(nèi)容,感興趣的小伙伴可以參考下文
    2021-08-08

最新評論