日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java atomiclong 使用_Java并发AtomicLongArray类

發布時間:2025/3/15 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java atomiclong 使用_Java并发AtomicLongArray类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

全屏

java.util.concurrent.atomic.AtomicLongArray類提供了可以原子讀取和寫入的底層long類型數組的操作,并且還包含高級原子操作。?AtomicLongArray支持對基礎long類型數組變量的原子操作。 它具有獲取和設置方法,如在變量上的讀取和寫入。 也就是說,一個集合與同一變量上的任何后續獲取相關聯。 原子compareAndSet方法也具有這些內存一致性功能。

AtomicLongArray類中方法

以下是AtomicLongArray類中可用的重要方法的列表。序號方法描述1public long addAndGet(int i, long delta)原子地將給定的值添加到索引i的元素。

2public boolean compareAndSet(int i, long expect, long update)如果當前值==期望值,則將位置i處的元素原子設置為給定的更新值。

3public long decrementAndGet(int i)索引i處的元素原子并自減1。

4public long get(int i)獲取位置i的當前值。

5public long getAndAdd(int i, long delta)原子地將給定的值添加到索引i的元素。

6public long getAndDecrement(int i)索引i處的元素原子并自減1,并返回舊值。

7public long getAndIncrement(int i)將位置i處的元素原子設置為給定值,并返回舊值。

8public long getAndSet(int i, long newValue)將位置i處的元素原子設置為給定值,并返回舊值。

9public long incrementAndGet(long i)在索引i處以原子方式自增元素。

10public void lazySet(int i, long newValue)最終將位置i處的元素設置為給定值。

11public int length()返回數組的長度。

12public void set(int i, long newValue)將位置i處的元素設置為給定值。

13public String toString()返回數組的當前值的String表示形式。

14public boolean weakCompareAndSet(int i, int expect, long update)如果當前值==期望值,則將位置i處的元素原子設置為給定的更新值。

實例

以下TestThread程序顯示了基于線程的環境中AtomicIntegerArray變量的使用。import?java.util.concurrent.atomic.AtomicLongArray;

public?class?TestThread?{

private?static?AtomicLongArray?atomicLongArray?=?new?AtomicLongArray(10);

public?static?void?main(final?String[]?arguments)?throws?InterruptedException?{

for?(int?i=0;?i

atomicLongArray.set(i,?1);

}

Thread?t1?=?new?Thread(new?Increment());

Thread?t2?=?new?Thread(new?Compare());

t1.start();

t2.start();

t1.join();

t2.join();

System.out.println("Values:?");

for?(int?i=0;?i

System.out.print(atomicLongArray.get(i)?+?"?");

}

}

static?class?Increment?implements?Runnable?{

public?void?run()?{

for(int?i=0;?i

long?add?=?atomicLongArray.incrementAndGet(i);

System.out.println("Thread?"?+?Thread.currentThread().getId()

+?",?index?"?+i?+?",?value:?"+?add);

}

}

}

static?class?Compare?implements?Runnable?{

public?void?run()?{

for(int?i=0;?i

boolean?swapped?=?atomicLongArray.compareAndSet(i,?2,?3);

if(swapped){

System.out.println("Thread?"?+?Thread.currentThread().getId()

+?",?index?"?+i?+?",?value:?3");

}

}

}

}

}

這將產生以下結果 -Thread?9,?index?0,?value:?2

Thread?10,?index?0,?value:?3

Thread?9,?index?1,?value:?2

Thread?9,?index?2,?value:?2

Thread?9,?index?3,?value:?2

Thread?9,?index?4,?value:?2

Thread?10,?index?1,?value:?3

Thread?9,?index?5,?value:?2

Thread?10,?index?2,?value:?3

Thread?9,?index?6,?value:?2

Thread?10,?index?3,?value:?3

Thread?9,?index?7,?value:?2

Thread?10,?index?4,?value:?3

Thread?9,?index?8,?value:?2

Thread?9,?index?9,?value:?2

Thread?10,?index?5,?value:?3

Thread?10,?index?6,?value:?3

Thread?10,?index?7,?value:?3

Thread?10,?index?8,?value:?3

Thread?10,?index?9,?value:?3

Values:

3?3?3?3?3?3?3?3?3?3

分享到:

0評論

總結

以上是生活随笔為你收集整理的java atomiclong 使用_Java并发AtomicLongArray类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。