java并发编程:线程安全管理类--原子操作类--AtomicReferenceArray<E>
1.类 AtomicReferenceArray<E>
public class AtomicReferenceArray<E>extends Objectimplements Serializable
可以用原子方式更新其元素的对象引用数组
2.构造函数详解
AtomicReferenceArray
public AtomicReferenceArray(int length)
- 创建给定长度的新 AtomicReferenceArray。
- 参数:
length- 该数组的长度
AtomicReferenceArray
public AtomicReferenceArray(E[] array)
- 创建与给定数组具有相同长度的新 AtomicReferenceArray,并从给定数组复制其所有元素。
- 参数:
array- 从中复制元素的数组- 抛出:
NullPointerException- 如果数组为 null
3.方法详解
length
public final int length()
- 返回该数组的长度。
-
- 返回:
- 该数组的长度
get
public final E get(int i)
- 获取位置
i的当前值。 -
- 参数:
i- 索引- 返回:
- 当前值
set
public final void set(int i,
E newValue)
- 将位置
i的元素设置为给定值。 -
- 参数:
i- 索引newValue- 新值
lazySet
public final void lazySet(int i,
E newValue)
- 最终将位置
i的元素设置为给定值。 -
- 参数:
i- 索引newValue- 新值- 从以下版本开始:
- 1.6
getAndSet
public final E getAndSet(int i,
E newValue)
- 以原子方式将位置
i的元素设置为给定值,并返回旧值。 -
- 参数:
i- 索引newValue- 新值- 返回:
- 以前的值
compareAndSet
public final boolean compareAndSet(int i,
E expect,
E update)
- 如果当前值
==预期值,则以原子方式将位置i的元素设置为给定的更新值。 -
- 参数:
i- 索引expect- 预期值update- 新值- 返回:
- 如果成功,则返回 true。返回 false 表示实际值与预期值不相等。
weakCompareAndSet
public final boolean weakCompareAndSet(int i,
E expect,
E update)
- 如果当前值
==预期值,则以原子方式将位置i的元素设置为给定的更新值。可能意外失败并且不提供排序保证,因此几乎只是
compareAndSet的适当替换方法。 -
- 参数:
i- 索引expect- 预期值update- 新值- 返回:
- 如果成功,则返回 true。
toString
public String toString()
java并发编程:线程安全管理类--原子操作类--AtomicReferenceArray<E>的更多相关文章
- java并发编程 线程基础
java并发编程 线程基础 1. java中的多线程 java是天生多线程的,可以通过启动一个main方法,查看main方法启动的同时有多少线程同时启动 public class OnlyMain { ...
- Java 并发编程 | 线程池详解
原文: https://chenmingyu.top/concurrent-threadpool/ 线程池 线程池用来处理异步任务或者并发执行的任务 优点: 重复利用已创建的线程,减少创建和销毁线程造 ...
- Java并发编程:线程间通信wait、notify
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- Java并发编程:线程和进程的创建(转)
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...
- java并发编程 | 线程详解
个人网站:https://chenmingyu.top/concurrent-thread/ 进程与线程 进程:操作系统在运行一个程序的时候就会为其创建一个进程(比如一个java程序),进程是资源分配 ...
- java并发编程系列二:原子操作/CAS
什么是原子操作 不可被中断的一个或者一系列操作 实现原子操作的方式 Java可以通过锁和循环CAS的方式实现原子操作 CAS( Compare And Swap ) 为什么要有CAS? Compar ...
- Java并发编程——线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...
- Java并发编程——线程池
本文的目录大纲: 一.Java中的ThreadPoolExecutor类 二.深入剖析线程池实现原理 三.使用示例 四.如何合理配置线程池的大小 一.Java中的ThreadPoolExecutor类 ...
- Java并发编程(三)Thread类的使用
一.线程的状态 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以下这几个状态:创建(new).就绪(runnable).运行(running).阻塞(blocked).time wait ...
- [转]JAVA并发编程学习笔记之Unsafe类
1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...
随机推荐
- noip 邮票面值设计 - 搜索 - 动态规划
描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定M(N+M<=10)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大max ,使得1-max之间的每一个邮资值都能 ...
- 自定义LisetView
1.ListView listview=findViewById(R.id.listview); 2.public class MyAdapter extends BaseAdapter{ priva ...
- ZooKeeper参数调优
zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg.其中各配置项的含义,解释如下: 1.tickTime:Client-Serv ...
- openwrt的编译方法
1.获取最新包 ./scripts/feeds update -a 2.安装包 ./scripts/feeds install -a 3.配置 make menuconfig 4.编译 make -j ...
- POJ 1270 Following Orders(拓扑排序)题解
Description Order is an important concept in mathematics and in computer science. For example, Zorn' ...
- rabbitmq direct、fanout、topic 三种Exchange java 代码比较
Producer端 1.channel的创建 无论是才用什么样的Exchange,创建channel代码都是相同的,如下 ConnectionFactory factory = new Connect ...
- ns-3 NetAnim遇到了一个问题
安装好了 NetAnim 之后,使用NS3原有例子 third.cc ,在 Simulator::run() 前面添加如下语句: AnimationInterface anim("third ...
- Nginx 随笔
使用包管理工具安装nginx Linux(基于deb) sudo apt-get install nginx Linux(基于rpm) sudo yum install nginx FreeBSD s ...
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song 算贡献+前缀和
E. Pretty Song time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- F4+2 团队项目软件设计方案
目录 1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2总体设计 2.1需求规定 2.2运行环境 2.3基本设计概念和处理流程 2.4功能描述 2.5功能器求与程序的关系 2.6人工处 ...