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,一经查实,立即删除!

相关文章

memcached client for java api,Memcached Client Forjava API

java_memcached-release 关键类及方法整理说明如下。 SockIOPool 这个类用来创建管理客户端和服务器通讯连接池,客户端主要的工作包括数据通讯、服务器定位、hash 码生成等都是由这个类完成的。 1.public static SockIOPool getInstance() 获得连接池的单态方…

对于JAVA的总结800字,java试用期转正工作总结500字

【www.gz85.com - 试用期工作总结500字】java试用期转正工作总结一年的时间,每当自己在总结它的时候,感觉是那么的短暂—弹指一挥间.而也就是在这一挥间,承载着太多太多,有收获与成就,有失败与不足.回头看看2012年的足迹,伴随着自己一年的是学习与坚持.2016年伊始是通过分销资源…

rtrim php,php rtrim() 格式化中文问题

先看以下代码var_dump(rtrim("互联网产品、", "、"));我们以为会得到结果 "互联网产品", 但实际上获得的是 ""互联网产��"为什么呢, 其实这是编码引起的问题.rtrim()这个函数在处理字符时是按照ascii编码来…

java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式

UTF-8 采用变长度字节来表示字符,理论上最多可以到 6 个字节长度(一个字符六个字节)。UTF-8 编码兼容了 ASC II(0-127), 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。对于超过一个字节长度的字符,才用以下编码规范&#xff1a…

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

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

php请求api获取返回值,我用curl请求接口获取返回值,但是不成功,大神给看看怎么调取?...

接口地址 http://mp.vservice.com.cn/service/OutWebService?wsdl接口调用方callService(String serviceName,String servId,String secretKey,String xmlInfo)参数名称 传值serviceName:OAuthservId :服务号idsecretKey :服务号秘钥xmlInfo…

对于单输入多输出系统matlab,求助!!如何把多输入多输出系统的传函转换为状态空间表达式?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个对应的是单输入单输出的。多输入多输出的如下:% Thansfer multiple transfer functions into sate space modelsclcclear all;% Step1:输入传递函数分子分母系数%From u1 to y1num1[-0.0006086 -7.715e-…

matlab的fftn,matlab fftn

(X,m,n) fftn 进行 n 维快速傅立叶变换(反变换用 ifftn) 语法:Yffn(X) \\ Yfftn(X,siz) fftshift 快速傅立叶变换的 DC 组件移到光谱中心 语法:......(X,m,n) fftn 进行 n 维快速傅立叶变换(反变换用 ifftn) 语法:Yffn(X) \\ Yfftn(X,siz) fftshift 快速傅立叶变换的 DC 组件移…

php catch e是什么,php try catch 中的catch(Exception $e) 中的Exception 有什么作用?

首先很明确的是 try ... catch ... 是一个语言结构。那既然如此就不能用函数参数类型限定的方式去理解 catch 后面的括号里的 Exception 了。如果这里没有 Exception,比如这样写:try {} catch ($e) {}你会得到一个错误:Parse error: parse er…

java udp 心跳,udp简略通讯示例-心跳示例

当前位置:我的异常网 软件架构设计 udp简略通讯示例-心跳示例udp简略通讯示例-心跳示例www.myexceptions.net 网友分享于:2013-09-04 浏览:44次udp简单通讯示例---心跳示例//发送心跳new UDPToPointCenter(18056).start();public class UDPToPointCen…

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:* * **********************…

php数组里面写路径,使用路径在PHP数组中进行递归搜索

我会尝试清理一下,但这有效:$needle ["chapter one", foo, bar];$array [["name" > "Intro","id" > "123","children" > ["name" > "foo","id" > &qu…

matlab时域分析论文,基于Matlab语言的数字信号时域相关性研究与分析.doc

摘要:针对在工程测试信号处理过程中广泛存在的信号之间的相关性问题,本文将研究和分析信号之间不同形式的相关关系以及信号在时域中的相关性。从而揭示了信号间关联程度的内在规律。通过举出实例来展示信号相关分析技术在实际工程中的具体应用。最后通过…

php 图片 byte数组,php – 将图像存储在PostgreSQL数据库的bytea字段中

TL; DR:删除addslashes($data).这里多余.双重逃避..两次$datafread($p,filesize($fi));$dataaddslashes($data);$dat pg_escape_bytea($data);您读取数据,将其转义为字符串文字,然后将其转换为bytea八进制或十六进制转义.即使pg_escape_bytea是理智的,它也不会那样,…

页面显示其他php,php – 分页在所有其他页面上显示来自第1页的相同帖子

终于解决了这个:function my_filter_where( $where ) {global $wp_query;if (is_array($wp_query->query_vars[post_status])) {if (in_array(future,$wp_query->query_vars[post_status])) {// posts today into the future$where . " AND post_date …

oracle格式化列宽度,ORACLE日期时间的格式化参数大全

经常遇到有朋友问询关于日期时间格式化的问题(或可以通过格式化轻易解决),经过参考Oracle SQL Reference官方文档,并附上详细的应用示例综合成文,希望能够对大家学习和使用有所帮助。本篇可视为"oracle著名及非著名函数介绍"的补充…

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…

mat 内存分析 Linux,JVM内存分析工具MAT使用简介

# Memory Analyzer使用简介markdown格式渲染异常请阅读附件。- [Memory Analyzer使用简介](#memory-analyzer使用简介)- [MAT 简介](#mat-简介)- [安装](#安装)- [图形界面使用方式](#图形界面使用方式)- [命令行使用方式](#命令行使用方式)- [线程dump](#线程dump)- [堆dump](…

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

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