AtomicInteger类

本文介绍了AtomicInteger类的应用场景及其实现线程安全的方式。通过对比synchronized关键字,突出了AtomicInteger在高并发环境下进行原子操作的优势,并提供了具体的代码示例。
摘要由CSDN通过智能技术生成

今天写代码,尝试使用了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();
}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值