脚本宝典收集整理的这篇文章主要介绍了Java™ 教程(原子变量),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
原子变量
java.util.concurrent.atomic包定义了支持单个变量的原子操作的类,所有类都有get
和set
方法,类似于对volatile
变量的读写操作,也就是说,set
与在同一个变量上任何后续的get
具有先发生关系,compareAndSet
原子方法也具有这些内存一致性特性,适用于整数原子变量的简单原子算法也是如此。
要查看如何使用此包,让我们返回我们最初用于演示线程干扰的Counter类:
class Counter { PRivate int c = 0; public void increment() { c++; } public void decrement() { c--; } public int value() { return c; } }
使Counter
免受线程干扰的一种方法是使其方法同步,如在SynchronizedCounter中:
class SynchronizedCounter { private int c = 0; public synchronized void increment() { c++; } public synchronized void decrement() { c--; } public synchronized int value() { return c; } }
对于这个简单的类,同步是可接受的解决方案,但是对于更复杂的类,我们可能希望避免不必要的同步对活性的影响,用AtomicInteger
替换int
字段允许我们在不使用同步的情况下防止线程干扰,如在AtomicCounter中:
import java.util.concurrent.atomic.AtomicInteger; class AtomicCounter { private AtomicInteger c = new AtomicInteger(0); public void increment() { c.incrementAndGet(); } public void decrement() { c.decrementAndGet(); } public int value() { return c.get(); } }
上一篇:执行器
下一篇:配置实用程序
以上是脚本宝典为你收集整理的Java™ 教程(原子变量)全部内容,希望文章能够帮你解决Java™ 教程(原子变量)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。