原子性操作类AtomicInteger等
来源:互联网 发布:白乐桑 知乎 编辑:程序博客网 时间:2024/05/16 08:36
JDK1.5之后的java.util.concurrent.atomic包里,多了一批原子处理类。主要用于在高并发环境下的高效程序处理。
他比直接使用传统的java锁机制(阻塞的)有什么好处?
最大的好处就是可以避免多线程的优先级倒置和死锁情况的发生,当然高并发下的性能提升也是很重要的。
补充:该对象在进行增加或者减少操作时候其他线程不能操作该对象;
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。
对于对象变成原子操作类通过IAtomicIntegerFieldUpdater类进行包装;
0 0
- 原子性操作类AtomicInteger等
- Java 原子操作类详解(AtomicInteger、AtomicIntegerArray等)
- 关于原子操作AtomicInteger、AtomicBoolean等
- volatile AtomicInteger java多线程操作 原子性
- 原子操作 AtomicInteger
- java中的原子操作类AtomicInteger及其实现原理
- java中的原子操作类AtomicInteger及其实现原理
- Java原子操作AtomicInteger的用法
- java.util.concurrent.atomic 并发包下的原子操作类(AtomicBoolean,AtomicInteger,AtomicLong......))
- AtomicInteger原子的使用
- 原子变量AtomicInteger
- java 原子变量AtomicInteger
- 原子变量AtomicInteger
- Java5原子性操作类
- 多线程:保持原子性的变量AtomicInteger(效率高于synchronized)
- Java自增原子性问题(测试Volatile、AtomicInteger)
- Java自增原子性问题(测试Volatile、AtomicInteger)
- Java多线程之原子性 volatile、atomicInteger、synchronized测试
- 文件的基本操作
- 解决Android App第一次启动时显示白屏或者黑屏的问题
- 深入理解java String
- 修改鼠标双击判断时间间隔
- org.hibernate.HibernateException: Error applying BeanValidation relational constraints
- 原子性操作类AtomicInteger等
- Android ScrollView下拉监听
- 试卷一
- Notification (通知)的 新版和旧版用法
- SQL数据库优化
- iOS超全开源框架、项目和学习资料汇总 数据库、缓存处理、图像浏览、摄像照相视频音频篇
- Activity跳转到Fragment的问题
- 《Objective-C学习总结》
- 贪心算法-最近点对问题