1.类 AtomicIntegerArray

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAATcAAABMCAIAAACH0mfTAAAJiElEQVR4nO2dP04rMRDGfQ4u4TtwB0r3r+EYFBaip6F89bOEOAEniOSCUxAUIVHuK5z1ju0Z779kY+D7CT0lXnvs3fjbGTvZeaoDALSNuvQAAAAjQKUAtA5UCkDrQKUAtA5UCkDrQKUAtA5UCkDrQKUAtM46lXrnfOWoNZY57IxSmjtwKoR+z40xRillrd2sL631xPrWWpWyzThPyJaXtzWWq9QZJarNmTAV2MPOKGXc4n5HxyQP67wcu56snDWEKWuMmdUqaPWbTvQtL29rrPKlztTk4K2+iFou0q/3XmuttVaKuaTGmBam1zKVtjD4+uX98UClp8Faa60NLs65JFLw3jfiBBaotJHBVy7vb2BQqbdaKWVcHzX2UWkS2aZhrjPa+lg/lwajFjkiDb3TfutU6jP9ktpZ33H02RGpXMIY45xzzmUyUAV0koVpl8VywWOEf2kF733XdaELaW2ZrT/Zo7RVKAneMutodPC0ryz2ptayobKtYmG4jOVI2MtbaVU3GG495TCympXrvDHJB+mMGia9M0SbZKKSN85orZn6AcmnleXe6th2iies1y9KkpE5Q2RNT4zuOUnlMkESrOeR3BFdW0a1dGQOhUljjCl9COsVQ2HoqFIhK4w3gji5qeSkwdOacZzUYBhteB3FVmlFR2KtDTqPp1y5vJVW0iGq2GyE4WioFkZID12KXKXEMQ2zXVYprZ++m6HSQt8jjNSv69xbTVUqbnDNGVF2b1apE5so3TCNvPfhkLU2zBLnXJjcoyrN/E9JRaV0Xk5RabZEpGddqjSOvNKqk7fE6pe3spE2ZY8tXBN60cJtsWtjQR5YqVI6l3N1zFHprD3fkfqVSDuQ30uYUrmcg37S2e28EyZ60EOpUufcSpWOjvMkKlUc2blEPzaxVenW6LClyyu1qhyikW2A1omXvbxWl+KEKl3jS1MpjAQZI/Xrd4vEl1atjpQTwvZjeF0qYWNfOgzcuazT8/nS0iD7GdY3aaWG9cs7V6XZGZW+tCN3GWmoG1OsS8l6j+4ZkdUn3T0aXI23OtfO5HVp8g2qKKOp9XP7NHz1VitlnLfWdV3nDG053HOkcglV7EDQaU2nhdY6W7+FCVeuSxeolAZ4wUgW7K1UKR18toItrwDrLSutOllv9cs7V6XUAo2l6UjK9fllKXyp7SO9LJjtz8WRbV5n+S1euqWaHJEjz+HItAUhW1/qN6lMtsjS+nTDiC9niffdMPvZT73cqi3LY/1ygzTScRoY3TTu5N8e0XJp93jK4FUa7tKus6Nsq3J4saPK5a20qhzKxhBr0ssY74+1D35DKhEvALOJ3imWZG+/Be3sGwXy70vV2X69B34J9b2Zxomuux1H2uGZGADaByoFoHWgUgBaByoFoHWgUgBaByoFoHWgUgBap0WVrvmqavfweHN1f3N1f/PnlZS+vuzq7V7vru7v/i3uFoAz0phKw2/5lv6uYvfweHP9HPT48uf+9uEtvLi5enyCSsG35QQqdfak+UuW/0zx9Y6qcfd8e/X3peu6rnv5M6rSE/Dy8Hz+TsBvZLVKT55laLFK//2NjrTruq57e7o+usctVLp7vr2GSsFZyFVKn37py/pHSozrX4Zj6RMuaaBa2unzKnnuoZvBljF5AojIyN0gVykNeh+fdq93Yb1aRL/9UjYp59e3tLx31CFaviF/iJzBaUlzf9BnRBOfFj1mkQWI86WSHZrbjNahz4smz47OyT9EF6UBqtLb615UhZj7yoNKdw+Pgzj//Y2vaRe7h8dgvG8DXwrOBVVp9jw1k7nBlUrhM/bxdrLMYGxx8m5W/qGaL6X+7fVucIO0clTp29M1rRDrp+veDKgUnA2q0jyCZTIElSvG0SxDxM5slXZzHqjLdSKtS9+erhmxkTp5BHszqJSRt9A7ACej4ktTnNHW845zxJdSG/NVOlo+MHGPd64vlRvu3garUCk4G/K6NMn+E18XohwKjsmEKnYEldLA9piYqBzBlPxDNOiN4W54nawt0w2hvo6wLu1e7/rX1E63e75NfjgRVfr29MDYB2Ax+R4viVYHXca3bPjJJqyX7WjrszfkoNLWDltMs/IPBdi92ZeH592/v8dyweNl39a8/Lkv9nLT8sJOf2iL72bBr6Kx3x5ty+BvSXgMQGv8apV20cFCoqBhfrdKAfgO/ByV3uRfn1z479LXA/wcfo5KAfipQKUAtA5UCkDrQKUAtA5UCkDrMCpN/vPDNUz7v+6b5NOod9X/afu1xpYz70ofZlwIfzBcj7PtMJY/XaW90C+4OIJKV/6PTuyPBr8NX1Z/kJ8bn0Kl5nNa1Y/KfWGGHWkYas9/INV+wcU5Y8R78lwrE1mbh8kfdCKGL2uXa2NJ/3Z/JrU4I6j0zP2Clfw4la7v1R+0+lgXS6wCKgUZqUqZSDU8Shb+h3BtXXhKRVsf8xgNGYuymc3qpciHJNoX6lfyJ9XyMM3In9R13u6l8C8cUmoIPvuSvfUxdOzFIEWS/qDjurdYajJqEew4Myyek6OCfWf21scld65YVqXl+YLtYXxpri5vdZjY/WOg8clQZ5TiHhLl7Uj5kGT7c/Mn8b128/In9XxZnQvD2/0wWd0HnbjO7K0NJV9Wv6cjymb/pyEKceY9u71JPq0op+vnT6Poa96+M3sdm7iP7AZR9ls5X7Al01TaizI+9hlVmmdG8rIdKR+SaH9u/iS+12OdhWHwl9XRjSS7Sqkwals79UjS2/1ylR4XzIksK/bTO0Iyft6+fL5gS7ZUqZAPSbQ/N38S3+tQzgfmBe6Qto+zM/l6Rql3lai0phMpgg1/S1UayF13xX46yC+r9+nnVfp88XzBllzQl47an5s/ie+12pij3OM9upTMt2RWJ6vUHzQJNVf40tDvEJM7e/BV++kg5/pScDHWqjTJiTJrXRqzGsn25+ZPSnsd8jDNzJ/0aehylKzHknVa92mydelEldIFoT9o9W5c8mXPdJUmJfHmItunYXl6LqJ96XzBlvB7vGk8qshebtyGNS4IxDKp6tN8RYl4i3xINftc/Xr+JNqE2yietMV73Ddi92DJtupHP549iQlTrYqRJzHuPuKh1FR6p2Ds5BHp4FQF+84e32bnJfbLnS/YnlXfly7/j5cAAJNZrtLp2zEAgDXgmRgAWgcqzUm/e8Bf/nfpz+c3ApUC0DpQKQCtA5UC0DpQKQCtA5UC0DpQKQCtA5UC0DpQKQCtA5UC0DpQKQCtA5UC0DpQKQCt8x+Jm55Ny7LIzgAAAABJRU5ErkJggg==" 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. Mybatis解决sql中like通配符模糊匹配 构造方法覆盖 mybits 增删改

    <select id="getRecByNameWildcard" parameterType="Student" resultMap="res ...

  2. android(十五) FTP的两种工作模式

    (一)PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链 当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了 ...

  3. thinkcmf安装教程与目录结构详解 快速上手版

    最近接了一个建站项目,要求用thinkcmf来搭建,ytkah在想php都大致一样吧,快速地下载安装包,可是!怎么安装呢?没看到安装指引文件或目录,查看了安装说明public目录做为网站根目录,入口文 ...

  4. centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课

    centos Linux系统日常管理1  cpuinfo cpu核数   命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...

  5. 【译】Using Objects to Organize Your Code

    耗了一个晚上吐血翻译不过也学到了不少...<使用对象来组织你的代码>,翻译中发现原作者在原文中有部分代码有误或不全,本文已修改和添加~ 丽贝卡·墨菲原文链接:http://rmurphey ...

  6. 配置Tomcat直接显示目录结构和文件列表

    Tomcat是直接显示目录结构和文件列表,只是在配置里面给关闭了. 关键在这里:\conf\web.xml 这个文件有一段配置直接控制Tomcat是允许显示目录结构和文件列表. <servlet ...

  7. 基于.net core webapi和mongodb的日志系统

    开发环境vs2017,.NET Core2.1, 数据写入到mongodb.思路就是1.提供接口写入日志,2.基于接口封装类库.3.引入类库使用 源码在最后 为什么要写它 很多开源项目像nlog.lo ...

  8. 028-B+树(一)

    B+ 树 这部分主要学习:什么是B+树? 了解了 B 树后再来了解下它的变形版:B+ 树,它比 B 树的查询性能更高. 一棵 B+ 树需要满足以下条件: 节点的子树数和关键字数相同(B 树是关键字数比 ...

  9. PR曲线 ROC曲线的 计算及绘制

    在linear model中,我们对各个特征线性组合,得到linear score,然后确定一个threshold,linear score < threshold 判为负类,linear sc ...

  10. zw版【转发·台湾nvp系列Delphi例程】HALCON SetIcon2

    zw版[转发·台湾nvp系列Delphi例程]HALCON SetIcon2 procedure TForm1.Button1Click(Sender: TObject);var img : HUnt ...