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语 ...
随机推荐
- python监控端口脚本[jkport2.0.py]
#!/usr/bin/env python #!coding=utf-8 import os import time import sys import smtplib from email.mime ...
- vs2012添加自定义资源步骤
1.新建Win32工程 2.选中Resource Files -> add resource 点击打开 这里需要你填写一个Resource Type ,假如你之前已经有了,就直接输入,没有的话在 ...
- MySQL命令行导出、导入数据库,备份数据库表
MySQL导出数据库/数据表 1.首先,将你MySQL安装目录,例如C:\Program Files\MySQL\MySQL Server 5.7\bin添加到你的系统环境变量PATH中: 2.导出数 ...
- jquery和bootstrap获取checkbox选中的多行数据
在项目中,经常遇到,于是整理 引用bootstrap的js和css 代码解释: $("#dgFlowList").find(":checkbox:checked" ...
- ubuntu16.04上安装tomcat7
sudo apt-get update sudo apt-get install tomcat7 启动:sudo service tomcat7 start 访问http://127.0.0.1:80 ...
- shell 算术运算符
算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30. - 减法 `expr $a - $b` ...
- highcharts PHP中使用
官网 https://www.hcharts.cn/demo/highcharts html <div id="container" style="min-widt ...
- 音视频学习系列第(三)篇---wav文件的存储和解析
音视频系列 什么是wav wav是一种无损的音频文件格式,wav文件有两部分,第一部分是文件头,记录一些重要的参数信息,如音频的采样率,通道数,数据位宽,第二部分是数据部分,数据部分可以是PCM,也可 ...
- Codeforces 757B - Bash's Big Day(分解因子+hashing)
757B - Bash's Big Day 思路:筛法.将所有因子个数求出,答案就是最大的因子个数,注意全为1的特殊情况. 代码: #include<bits/stdc++.h> usin ...
- Python -- xlrd,xlwt,xlutils 读写同一个Excel
最近开始学习python,想做做简单的自动化测试,需要读写excel,然后就找到了xlrd来读取Excel文件,使用xlwt来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用x ...