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语 ...
随机推荐
- Unix/Linux系统编程
一,开发工具 编译器 GCC 调试工具 GDB 代码编辑 Vim 1. 编译命令 gcc hello.c -o hello # 第二个hello为新生成的可执行文件名 -o 为生成的可执行文件指定名称 ...
- 01: socket模块
网络编程其他篇 目录: 1.1 socket理论部分 1.2 socket处理单个连接 和 同时接受多个连接 1.3 socket实现远程执行命令,下载文件 1.4 通过socket实现简单的ssh ...
- Unity3D之预设
预设的两个特性: 1.重用性.可以使我们快速方便的创建大量的重复性资源.这种创建是通过预设的实例化Instance操作来完成的 在Hierarchy视图中将实例物理添加到Assests中,此时图标 ...
- 20145331魏澍琛《网络对抗》Exp4 恶意代码分析
20145331魏澍琛<网络对抗>Exp4 恶意代码分析 基础问题回答 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作 ...
- CSS3实现小黄人动画
转载请注明出处,谢谢! 每次看到CSS3动画就心痒痒想试一下,记得一个多月前看了白树哥哥的一篇博客,突然开窍,于是拿他提供的demo试了一下,感觉很棒!下图为demo提供的动画帧设计稿. 自己也想说搞 ...
- Qt Designer中文入门教程
Qt Designer窗口布局Layouts提供了四种布局方法,他们是: Vertical Layout 纵向布局Horizontal Layout 横向布局Grid Layout 栅格布局Form ...
- hdu 5381 The sum of gcd 莫队+预处理
The sum of gcd Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) P ...
- An error occurred during installation: No such plugin: cloudbees-folder
解决办法:下载cloudbees-folder.hpi放在目录/usr/local/tomcat/webapps/jenkins/WEB-INF/detached-plugins/下,重启tomcat ...
- c++ 判断给定区间是否是一个heap. O(N) (is_heap)
#include <iostream> // cout #include <algorithm> // is_heap, make_heap, pop_heap #includ ...
- 引用类(RC)
R 中还有一种具有引用语义的类系统,它更像其他面向对象编程语言中的类系统.首先,为了定义一个引用类( reference class , RC ),我们要给 setRefClass( )一个类定义.不 ...