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评论

14487a65ea137d8f9ac97cdce44a0324.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的世界java版刷雪球机,我的世界手机版怎么刷雪球 无限刷雪球机

随着全球变暖,厄尔尼诺现象加剧,一些生活在亚热带的孩子越来越感受不到下雪的喜悦,雪场的票子也是难求!不过不要着急,Minecraft给你模拟了一个生存的环境,在这里,你可以和好友联机打雪仗&#x…

php如何随机显示图片,php中随机显示图片的函数代码_php

/*********************************************** Filename : img.php* Author : freemousehttp://www.gaodaima.com/?p49284php中随机显示图片的函数代码_php* web : www.cnphp.info* email :freemouse1981gmail.com* Date : 2010/12/27* Usage:* * **********************…

oracle 8i漏洞渗透,一次通过Oracle8i入侵系统之旅(组图)

最近看了些有关Oracle的安全资料,看后随手做了一个渗透测试,把过程记录下来方便日后查阅.先用SuperScan4.0扫描下要测试的主机,速度很快,结果如图1所示:图 1端口 1521 是 Oracle 的 TNS Listener 默认监听的端口,通过扫描报告还可以看到Oracle的版本为8i.现在还不知道对方的操作…

linux系统安装serv u,建立第一个可用的FTP服务器

二、建立第一个可用的FTP服务器1、比如本机IP地址为“192.168.0.48”,已建立好域名“ftp.bbc.com”的相关DNS记录。2、打开Serv-U管理器。选上图的“Serv-U Administrator”,即出现“Setup Wizard”(设置向导)。此向导可以帮你轻松地完成基本设置&#x…

Linux配置scheme环境,用 Xcode Configuration 和 Scheme 配置项目环境

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?想象一个场景,我们正在开发一款支付系统,这个支付系统同时支持有Web版和原生的iOS APP版本。这个支付系统有三个环境:dev: 调用…

linux进入字符界面编程,MPlayer字符界面操作方法

一、启动播放时参数:在终端下敲入:./mplayer 提示各种使用帮助信息-vo 选择视频输出模式和设备(用-vo help查看列表)-ao 选择音频输出模式和设备(用-ao help查看列表)-ss 寻找指定的(多少秒或hh:mm:ss)位置-nosound 不播放声音-fs -vm -zoom …

linux怎么删web应用程序错误,Ubuntu 20.04将删除Amazon Web应用程序,但用户可另行安装...

Ubuntu 20.04将删除Amazon Web应用程序,原因就是这款应用很少有用户使用,但需要的用户也可另行安装。在过去的8年中,Amazon Web应用程序已成为Ubuntu桌面的一部分,现在,Ubuntu 20.04已决定退出。亚马逊网络启动器是在U…

linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]

转自:http://www.vuln.cn/2000sqlmap的功能与强大性不必多言,方便大家下载,给大家整理了下sqlmap最新版的官网与github下载地址。官网下载地址github下载环境与安装windows系统环境安装windows下安装sqlmap需要python环境支持安装好后&#x…

linux gcc本地链接lib文件(c静态,动态),GCC中静态连接和动态连接的区别(LINUX下)...

最近正在学习库的用法,写了最基础的libmystring.a的库(里面只有一个add函数),然后编写test程序测试add函数,用ar命令创建好libmystring.a库后,用以下命令编译静态连接的a.outgcc –static test.c –L ./ –lmystring –o a.out得到…

c语言 样例测试覆盖,白盒测试实例之十一——逻辑覆盖测试

逻辑覆盖测试是通过对程序逻辑结构的遍历实现程序的覆盖。从覆盖源代码的不同程度可以分为以下六个标准:语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、判定-条件覆盖(又称为分支-条件覆盖)、条件组合覆盖和路径覆盖。先看一下具体例子的源代码(C语言)&#xff1a…

ev3的c语言编程软件,乐高EV3编程软件教育版下载

乐高EV3编程软件教育版官方版是一款用于机器人编程的应用工具,乐高EV3编程软件教育版最新版可以通过可视化图标形式编程,用以控制机器人的各种动作指令,乐高EV3编程软件教育版操作起来比较简单,发挥你的想象,创造无限的…

android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线

与搭载Android 2.3系统的OPPO R807不同,OPPO R817搭载了Android 4.0系统。不过这款手机仍旧舍弃了Android系统的原生界面,因此两款手机在界面上的变化其实并不非常大。升级Android 4.0后界面变化不大内置多款主题与解锁样式可更改字体及SIM卡信息OPPO R8…

android清除图案锁 位置,安卓手机清除锁屏密码、锁屏图案的教程

来源:安卓网2014-01-21/12:15本文分享一个安卓手机清除锁屏密码以及锁屏图案的几种方法和详细教程。如果锁屏密码、或者图形锁屏密码忘记了怎么办,怎么清除呢?下面小编整理了3种安卓手机清除锁屏图案密码的方法。↓↓↓准备工作:1.确保已经安…

html5程序自动登录,Jtro的技术分享:网页调起unity的exe程序并自动登录

思路是这样:通过一个额外的exe文件来实现登录,并保存一个token文件,然后在unity的项目提交数据的时候读取这个token向服务器发送数据。下面是具体的方法:s这个需要用到WPF来编写,首先打开VS2017,选择创建WP…

html 图片防盗链,【反防盗链】介绍一个对付图片防盗链的方法

悲催的声明:由于腾讯也采用了防盗链技术,本文方法已经失效了!当我们想在文章里引用某张图片时,如果对方设置了防盗链,我们看到的将是404或forbidden或其他图片,而不是想要的那张图片,为此&#…

html字体阴影怎么设置6,css怎么设置字体阴影

css设置字体阴影的方法:使用代码【text-shadow:3px 3px 3px #00f;】,【text-shadow】属性应用于阴影文本,语法为【text-shadow: h-shadow v-shadow blur color;】。本教程操作环境:windows10系统、css3版,该方法适用于…

PCL入门

pcl的入门 本博客主要是对外文的翻译,及其他资料的一些整理。 pcl 分割成好几个模块的库 Filters(滤波器) Features(特征) Keypoints(关键点) Registration(注册) KdTree:k-dimension tree(k维的树) OcTree(八叉树) Segmetation(分割) Sample Consensus(采…

pcl里面的3D特征

我这里不介绍pcl里面的类的命名规范,及点的类型。为什么呢?pcl里面类的命名规范,比较繁琐,而且主要是针对要对pcl这个库要开源的人士,而pcl里面的点的类型太多,足够满足你的要求。所以我们要走一条具有中国特色的pcl主…

html本地缓存未查看信息,不同用户看到了相同的信息-一次web系统缓存问题的解决...

最近负责的系统总是出现奇怪的缓存问题,在这里简单记录一下碰到的问题和踩到的坑。问题:用户反映使用不同账号A,B登录时,都出现账号A的页面信息(未邮寄账单提示)。如下所示:图1:未邮寄账单提示一 session缓…

pcl里面的法线估计

法线估计是一个很重要的特征,常常在被使用在很多计算机视觉的应用里面,比如可以用来推出光源的位置,通过阴影与其他视觉影响。 给一个几何表面,去推断给定点的法线方向,即垂直向量的方向往往是不容易的。然而&#xf…