jdk1.5——线程并发库-java.util.concurrent.atomic

 

 

在JDK API文档搜索关键词 Atomic

 

eg: AtomicInteger   AtomicIntegerArray 等, 细节请参看API

 

需要注意的是:  jdk提供的这些类, 仅仅是针对多线程操作 成员变量时 提供的封装好的原子操作类,

如果是多线程下的局部变量需要这种类。

 

 

J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值(更新)操作。

 

以java多线程用法-使用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能够达到多而不乱,处理高并发应付自如,是因为硬件提供原子操作指令实现,

相对于第一种写法的加锁操作,后者在非激烈竞争的情况下,开销更小,速度更快。

 

Java.util.concurrent中实现的原子操作类包括:

AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference。
 
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值