java并发编程:线程安全管理类--原子操作类--AtomicIntegerArray
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()
java并发编程:线程安全管理类--原子操作类--AtomicIntegerArray的更多相关文章
- 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语 ...
随机推荐
- JIRA licence crack and etc
https://my.oschina.net/u/199525/blog/313788 http://blog.csdn.net/joinandjoin/article/details/9052785 ...
- (windows下)tomcat优化--内存,并发.缓存三方面优化
一.内存 注: jdk1.8中废弃了-XX:PermSize和-XX:MaxPermSize的持久态(存放常量.静态变量区)配置, 多了一个元数据区(Metadata Space:默认为内存的0.2% ...
- (2.15)Mysql之SQL基础——开发设计最佳规范
(2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...
- 基于Python的交互式可视化工具 [转]
前几天发现一个可视化工具Dash,当看到它的交互式效果后突然就觉得眼前一亮.早就想写出来分享给大家,今天利用睡前一点时间发出来,希望能给有需要的朋友带来一点帮助或者多一个参考. Dash介绍 在Pyt ...
- 零碎收集cocos知识
Configuration类 返回环境变量 local function menuCallback(tag, pSender) printInfo("selected item tag:%d ...
- CSS样式有哪些常用的属性?
一般的一个DIV的CSS设置属性有:margin,padding,width,height,font-size,text-align,background,float,border CSS样式有哪些常 ...
- Hello 2019 Solution
A. Gennady and a Card Game 签到. #include <bits/stdc++.h> using namespace std; ], t[]; bool solv ...
- STM32|4-20mA输出电路(转)
源:STM32|4-20mA输出电路 STM32+运算放大器实现VI转换,4mA-20mA发送器
- 基于swing的MySQL可视化界面
个人记录贴... 代码过烂不宜参考.. 效果展示 1.选择需要打开的数据库,查看数据库下的表. 2.双击打开一个表 3.没有CRUD.... 代码 test-main: import shell.DB ...
- 从知乎了解到,为什么Mysql禁用存储过程、外键和级联?
打开帖子直接一张醒目的图,是阿里巴巴的Java开发手册对Mysql相关的要求. 看看下面的回复 灵剑 存储过程没有版本控制,版本迭代的时候要更新很麻烦.存储过程如果和外部程序结合起来用,更新的时候很难 ...