1.类 AtomicIntegerArray

  aaarticlea/png;base64,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" alt="" />

  可以用原子方式更新其元素的 int 数组

2.构造函数详解

AtomicIntegerArray

public AtomicIntegerArray(int length)
创建给定长度的新 AtomicIntegerArray。

参数:
length - 该数组的长度

AtomicIntegerArray

public AtomicIntegerArray(int[] array)
创建与给定数组具有相同长度的新 AtomicIntegerArray,并从给定数组复制其所有元素。

参数:
array - 从中复制元素的数组
抛出:
NullPointerException - 如果数组为 null

3.方法详解

length

public final int length()
返回该数组的长度。

返回:
该数组的长度

get

public final int get(int i)
获取位置 i 的当前值。

参数:
i - 索引
返回:
当前值

set

public final void set(int i,
int newValue)
将位置 i 的元素设置为给定值。

参数:
i - 索引
newValue - 新值

lazySet

public final void lazySet(int i,
int newValue)
最后将位置 i 的元素设置为给定值。

参数:
i - 索引
newValue - 新值
从以下版本开始:
1.6

getAndSet

public final int getAndSet(int i,
int newValue)
将位置 i 的元素以原子方式设置为给定值,并返回旧值。

参数:
i - 索引
newValue - 新值
返回:
以前的值

compareAndSet

public final boolean compareAndSet(int i,
int expect,
int update)
如果当前值 == 预期值,则以原子方式将位置 i 的元素设置为给定的更新值。

参数:
i - 索引
expect - 预期值
update - 新值
返回:
如果成功,则返回 true。返回 false 指示实际值与预期值不相等。

weakCompareAndSet

public final boolean weakCompareAndSet(int i,
int expect,
int update)
如果当前值 == 预期值,则以原子方式将位置 i 的元素设置为给定的更新值。

可能意外失败并且不提供排序保证,所以只是在很少的情况下才对 compareAndSet 进行适当地选择。

参数:
i - 索引
expect - 预期值
update - 新值
返回:
如果成功,则返回 true。

getAndIncrement

public final int getAndIncrement(int i)
以原子方式将索引 i 的元素加 1。

参数:
i - 索引
返回:
以前的值

getAndDecrement

public final int getAndDecrement(int i)
以原子方式将索引 i 的元素减 1。

参数:
i - 索引
返回:
以前的值

getAndAdd

public final int getAndAdd(int i,
int delta)
以原子方式将给定值与索引 i 的元素相加。

参数:
i - 索引
delta - 要加上的值
返回:
以前的值

incrementAndGet

public final int incrementAndGet(int i)
以原子方式将索引 i 的元素加 1。

参数:
i - 索引
返回:
更新的值

decrementAndGet

public final int decrementAndGet(int i)
以原子方式将索引 i 的元素减 1。

参数:
i - 索引
返回:
更新的值

addAndGet

public final int addAndGet(int i,
int delta)
以原子方式将给定值与索引 i 的元素相加。

参数:
i - 索引
delta - 要加上的值
返回:
更新的值

toString

public String toString()
返回数组当前值的字符串表示形式。

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

  

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

  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. Database Sharding, The “Shared-Nothing” Approach DATABASE SHARDING

    w将单个服务器上的单个数据库打碎为多个服务器上的单个数据库 http://www.agildata.com/database-sharding/ Database Sharding provides ...

  2. numpy基本方法总结 --good

    https://www.cnblogs.com/xinchrome/p/5043480.html 一.数组方法 创建数组:arange()创建一维数组:array()创建一维或多维数组,其参数是类似于 ...

  3. talib 中文文档(七):Overlap Studies Functions

    Overlap Studies Functions 重叠指标 BBANDS - Bollinger Bands 函数名:BBANDS 名称: 布林线指标 简介:其利用统计原理,求出股价的标准差及其信赖 ...

  4. 'ascii' codec can't decode byte 0xc4 in position 27: ordinal not in range(128)

    This error happens when I try to run d:\linux\linuxkernel\android\内核\blog\BlogBackup(v1.1)source\htm ...

  5. GlobeMapper生成Google瓦片

    GlobeMapper真牛,生成自己的瓦片叠在GoogleMap的地图上,效果如下:

  6. nmon 命令

    nmon 命令 用途 以交互方式显示本地系统统计信息并以记录方式记录系统统计信息. 语法 交互方式: nmon [ -h ] nmon [ -s < seconds >] [ -c < ...

  7. KS检验学习[转载]

    转自:https://wenku.baidu.com/view/ccfa573a3968011ca30091d6.html https://www.cnblogs.com/arkenstone/p/5 ...

  8. JOJ1202。重新操刀ACM,一天一练!做个简单的题目温习。

    http://ac.jobdu.com/problem.php?pid=1202 题目描述: 对输入的n个数进行排序并输出. 输入: 输入的第一行包括一个整数n(1<=n<=100).   ...

  9. tornado 入门

    Overview FriendFeed是一款使用 Python 编写的,相对简单的 非阻塞式 Web 服务器.其应用程序使用的 Web 框架看起来有些像 web.py 或者 Google 的 weba ...

  10. (1)了解cocostudio基础

    操作界面   Cocos Studio的界面主要分为菜单栏.工具栏.对象面板.资源面板.画布面板.属性面板.动画面板.输出窗口.状态栏九部分组成,如下图: 菜单栏   菜单栏为Cocos Studio ...