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()
返回数组当前值的字符串表示形式。

覆盖:
Object 中的 toString
返回:
数组当前值的字符串表示形式。

java并发编程:线程安全管理类--原子操作类--AtomicReferenceArray<E>的更多相关文章

  1. java并发编程 线程基础

    java并发编程 线程基础 1. java中的多线程 java是天生多线程的,可以通过启动一个main方法,查看main方法启动的同时有多少线程同时启动 public class OnlyMain { ...

  2. Java 并发编程 | 线程池详解

    原文: https://chenmingyu.top/concurrent-threadpool/ 线程池 线程池用来处理异步任务或者并发执行的任务 优点: 重复利用已创建的线程,减少创建和销毁线程造 ...

  3. Java并发编程:线程间通信wait、notify

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

  4. Java并发编程:线程和进程的创建(转)

    Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...

  5. java并发编程 | 线程详解

    个人网站:https://chenmingyu.top/concurrent-thread/ 进程与线程 进程:操作系统在运行一个程序的时候就会为其创建一个进程(比如一个java程序),进程是资源分配 ...

  6. java并发编程系列二:原子操作/CAS

    什么是原子操作 不可被中断的一个或者一系列操作 实现原子操作的方式 Java可以通过锁和循环CAS的方式实现原子操作 CAS( Compare And Swap )  为什么要有CAS? Compar ...

  7. Java并发编程——线程池的使用

    在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...

  8. Java并发编程——线程池

    本文的目录大纲: 一.Java中的ThreadPoolExecutor类 二.深入剖析线程池实现原理 三.使用示例 四.如何合理配置线程池的大小 一.Java中的ThreadPoolExecutor类 ...

  9. Java并发编程(三)Thread类的使用

    一.线程的状态 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以下这几个状态:创建(new).就绪(runnable).运行(running).阻塞(blocked).time wait ...

  10. [转]JAVA并发编程学习笔记之Unsafe类

    1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...

随机推荐

  1. JSmpeg-用JavaScript编写的视频播放器

    使用说明:https://github.com/phoboslab/jsmpeg ffmpeg -i rtmp://abc/ccc/111 -f mpegts -codec:v mpeg1video ...

  2. 20145318《网络对抗》Web安全基础实践

    20145318<网络对抗>Web安全基础实践 基础问题回答 1.SQL注入原理,如何防御 SQL注入 就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的查询字符串 ...

  3. mpvue小程序开发入门级指南

    报错指南 "Error: ERR_GET_SESSION_KEY {"code":5100,"message":"(-1)服务内部错误,请稍 ...

  4. VS编译duilib项目时候的错误解决方法整理(转载)

    转载自:http://blog.csdn.net/x356982611/article/details/30217473 @1:找不到Riched20.lib 用everything等软件搜索下磁盘, ...

  5. 标准IO与文件IO 的区别【转】

    本文转载自:http://blog.sina.com.cn/s/blog_63f31f3401013jrn.html 先来了解下什么是标准IO以及文件IO. 标准IO:标准I/O是ANSI C建立的一 ...

  6. mbr看图

  7. <OFFER05> 05_ReplaceSpaces

    void ReplaceBlank(char str[], int length) // length >= the real length of string { ) { return; } ...

  8. mysql链接 显示 error: 'Access denied for user 'root'@'localhost' (using password: NO)'

    解决方案 https://stackoverflow.com/questions/2995054/access-denied-for-user-rootlocalhost-using-password ...

  9. Ubuntu16.04 无法连接WiFi

    在安装完 ns-3.25 之后,着手开始准备 Eclipse 的安装,打开了 Firefox游览器 准备上网的时候,发现网络没有正常连接. 刚刚开始怀疑的是,并没有连接上网络. 于是打开了终端,pin ...

  10. python后端工程师 数据爬虫

    大数据挖掘分析平台和产品的建设. 工作职责: 独立完成软件系统代码的设计与实现: 根据需求完成设计,代码编写,调试,测试和维护: 使用Python 语言对后台业务逻辑进行开发以及维护: 能根据实际需求 ...