码迷,mamicode.com
首页 > 移动开发 > 详细

[Android Pro] AtomicInteger的用法

时间:2017-05-17 22:13:35      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:get   highlight   加锁   incr   赋值   cin   程序代码   并发   ref   

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。

[Android Pro] AtomicInteger的用法

标签:get   highlight   加锁   incr   赋值   cin   程序代码   并发   ref   

原文地址:http://www.cnblogs.com/0616--ataozhijia/p/6869657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!