首页 > 其他 > 详细

AtomicInteger类

时间:2014-10-21 21:42:43      阅读:254      评论:0      收藏:0      [点我收藏+]

今天写代码,尝试使用了AtomicInteger这个类,感觉使用起来很爽,特别适用于高并发访问,能保证i++,++id等系列操作的原子性。++i和i++操作并不是线程安全的,很多人会用到synchronized关键字。相对与AtomicInteger这个类而言。AtomicInteger可以用原子方式更新的 int 值。AtomicInteger对int型加减操作的线程安全,性能上远远优越于synchronized。

这是AtomicInteger源码中提供的全部接口方法。

构造方法摘要

AtomicInteger() 
           创建具有初始值 0 的新 AtomicInteger。 
AtomicInteger(int initialValue) 
           创建具有给定初始值的新 AtomicInteger。 

方法摘要

 int addAndGet(int delta) 
           以原子方式将给定值与当前值相加。 
 boolean compareAndSet(int expect, int update) 
           如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。 
 int decrementAndGet() 
           以原子方式将当前值减 1。 
 double doubleValue() 
           以 double 形式返回指定的数值。 
 float floatValue() 
           以 float 形式返回指定的数值。 
 int get() 
           获取当前值。 
 int getAndAdd(int delta) 
           以原子方式将给定值与当前值相加。 
 int getAndDecrement() 
           以原子方式将当前值减 1。 
 int getAndIncrement() 
           以原子方式将当前值加 1。 
 int getAndSet(int newValue) 
           以原子方式设置为给定值,并返回旧值。 
 int incrementAndGet() 
           以原子方式将当前值加 1。 
 int intValue() 
           以 int 形式返回指定的数值。 
 void lazySet(int newValue) 
           最后设置为给定值。 
 long longValue() 
           以 long 形式返回指定的数值。 
 void set(int newValue) 
           设置为给定值。 
 String toString() 
           返回当前值的字符串表示形式。 
 boolean weakCompareAndSet(int expect, int update) 
           如果当前值 == 预期值,则以原子方式将该设置为给定的更新值。 

下面贴一个简单的例子:

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类

原文:http://blog.csdn.net/hu948162999/article/details/40349353

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!