AtomicInteger的介绍和使用

1、类介绍

可以用原子方式更新的 int 值。

2、使用场景

主要用于在高并发环境下的高效程序处理。使用非阻塞算法来实现并发控制。

3、API

方法摘要
 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)

如果当前值 == 预期值,则以原子方式将该设置为给定的更新值。

时间: 2024-10-06 21:23:36

AtomicInteger的介绍和使用的相关文章

全面了解 Java 原子变量类

?? 本文以及示例源码已归档在 javacore 一.原子变量类简介 为何需要原子变量类 保证线程安全是 Java 并发编程必须要解决的重要问题.Java 从原子性.可见性.有序性这三大特性入手,确保多线程的数据一致性. 确保线程安全最常见的做法是利用锁机制(Lock.sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性的,线程安全的.互斥同步最主要的问题是线程阻塞和唤醒所带来的性能问题. volatile 是轻量级的

AtomicInteger源码分析

问题背景 最近在看LinkedBlockingQueue看到了其中的count使用AtomicInteger修饰,之前也看过AtomicInteger的一些解释,也是似懂非懂的,今天深入的了解了其实现方式,学到了很多东西. 基础介绍 要对AtomicInteger有一个深入的认识,就必须要了解一下悲观锁和乐观锁.cpu是时分复用的,也就是把cpu的时间片,分配给不同的线程/进程轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换.切换涉及到清空寄存器,缓存数据.然后重新加载新

volley介绍04

------------------------------------------------------------------------------- 转载:http://blog.csdn.net/crazy__chen/article/details/46490635 ------------------------------------------------------------------------------- 上一篇文章给大家说明了Request<T>的内部结构,对

JAVA多线程之间共享数据BlockingQueue介绍

在JAVA的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景. 一.认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示:  从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列的一端输入,从

JDK源码分析-AtomicInteger

AtomicInteger可以看做Integer类的原子操作工具类.在java.util.concurrent.atomic包下,在一些使用场合下可以取代加锁操作提高并发性.接下来就从几个方面来介绍: 1.原子性和CAS. 2.CPU底层实现原理. 3.atomic包介绍. 4.源码分析. 原子性和CAS 原子性就是指某一个操作是不可拆分的,是一个整体必须要一次性全部执行完成要么就不执行. CAS是Compare And Swap(比较并交换).意思是当你要更新某个值的时候先要检查这个变量的当前

AtomicInteger简介

这个类真的非常实用,更重要的是 它确实非常简单: 附上自己的代码,可以自己试试: AtomicInteger,一个提供原子操作的Integer的类.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字.而AtomicInteger则通过一种线程安全的加减操作接口. 代码: package test; import java.util.concurrent.atomic.AtomicInteger;/** * 来看AtomicInteg

AtomicInteger相关类

引用地址:http://blog.csdn.net/xh16319/article/details/17056767 在java6以后我们不但接触到了Lock相关的锁,也接触到了很多更加乐观的原子修改操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,以及并发中的ABA问题,本文讲述Atomic系列的类的实现以及使用方法,其中包含: 基本类:AtomicInteger.AtomicLong.AtomicBoolean: 引用类型:AtomicRe

Java线程池介绍

Java线程池介绍 2015-10-24 ImportNew (点击上方公号,可快速关注) 原文:allegro 译文:ImportNew - paddx 链接:http://www.importnew.com/16845.html 根据摩尔定律(Moore’s law),集成电路晶体管的数量差不多每两年就会翻一倍.但是晶体管数量指数级的增长不一定会导致 CPU 性能的指数级增长.处理器制造商花了很多年来提高时钟频率和指令并行.在新一代的处理器上,单线程程序的执行速率确实有所提高.但是,时钟频率

Java5对线程处理的新操作-concurrent包介绍

上节中简单介绍了传统的jdk中的线程的概念,本节中接着介绍下jdk5之后对线程处理有哪些改变. 首先,介绍下java.util.concurrent包下有个字包atomic(原子的)包,其中的一些类提供原子性操作类,分别是: 1 AtomicBoolean, 2 AtomicInteger,AtomicIntegerArray,AtomicIntegerFieldUpdater<T>, 3 AtomicLong,AtomicLongArray,AtomicLongFieldUpdater<