Java中的线程(十一)- AtomicInteger的用法
来源:互联网 发布:seo新站优化靠谱 编辑:程序博客网 时间:2024/06/07 00:19
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。
- Java中的线程(十一)- AtomicInteger的用法
- AtomicInteger类保证线程安全的用法
- Java原子操作AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- AtomicInteger的用法
- 线程中的AtomicInteger和CountDownLatch
- java 线程原子问题 AtomicInteger
- Java线程之三 AtomicInteger
- JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用
- JAVA中无锁的线程安全整数AtomicInteger介绍和使用
- Java之多线程AtomicInteger (多人买票) -yellowcong
- Perl的那些技巧:平均切割数组
- nyoj 881 小M的区间公约数
- js 判断是不是undefined
- Android锁屏后调用了ondestroy()方法,解屏后重新oncreate()的问题的解决方案。
- 【iphone开发】从摄像头/相册获取图片,压缩图片,上传服务器小结
- Java中的线程(十一)- AtomicInteger的用法
- 十四周——成绩处理
- fineReport6.5表单显示错误
- CSS中的绝对定位与相对定位
- 6种排序算法的简洁实现:冒泡、选择、插入、归并、快速、堆
- 有向图的邻接表表示法
- 第14周项目10-选择排序
- 用jquery禁用和恢复超链接
- nyoj-916-胖子小的百宝袋