博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android Pro] AtomicInteger的用法
阅读量:5885 次
发布时间:2019-06-19

本文共 1018 字,大约阅读时间需要 3 分钟。

J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值(更新)操作. 比 如对于++运算符AtomicInteger可以将它持有的integer 能够atomic 地递增。在需要访问两个或两个以上 atomic变量的程序代码(或者是对单一的atomic变量执行两个或两个以上的操作)通常都需要被synchronize以便两者的操作能够被当作是 一个atomic的单元。

java多线程用法-使用AtomicInteger
下面通过简单的两个例子的对比来看一下 AtomicInteger 的强大的功能
class Counter {    private volatile int count = 0;    public synchronized void increment() {           count++;  //若要线程安全执行执行count++,需要加锁    }    public int getCount() {           return count;    }}
class Counter {    private AtomicInteger count = new AtomicInteger();     public void increment() {           count.incrementAndGet();    }       //使用AtomicInteger之后,不需要加锁,也可以实现线程安全。    public int getCount() {          return count.get();    }}

 

从上面的例子中我们可以看出:使用AtomicInteger是非常的安全的
那么为什么不使用记数器自加呢,例如count++这样的,因为这种计数是线程不安全的,高并发访问时统计会有误,而AtomicInteger为什么能够达到多而不乱,处理高并发应付自如呢?
这是由硬件提供原子操作指令实现的。在非激烈竞争的情况下,开销更小,速度更快。Java.util.concurrent中实现的原子操作类包括:
AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference。

转载地址:http://vklix.baihongyu.com/

你可能感兴趣的文章
C#往SQLServer中插入大数据
查看>>
使用UNetbootin制作U盘启动
查看>>
flask 知识点总结
查看>>
ORACLE字符集基础知识
查看>>
<摘录>详谈高性能TCP服务器的开发
查看>>
手机按键控制
查看>>
U3D之Editor扩展学习
查看>>
【C语言】练习1-23
查看>>
一级缓存相关
查看>>
GDB调试之暂停
查看>>
c语言全局变量和局部变量问题汇总
查看>>
scott权限
查看>>
Shell数值、字符串比较
查看>>
远程调用相关技术
查看>>
和Timesten有个约会--Timesten技术专栏系列(一)
查看>>
Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
查看>>
系统架构设计师考试大纲
查看>>
XMPP协议介绍
查看>>
学习 TList 类的实现[2]
查看>>
BIND_MISMATCH导致过多VERSION COUNT的问题
查看>>