今天在看Volley的源码的时候,看到里面使用了AtomicInteger这个类,曾经没用过,今天看了一下API学习了一下:

首先介绍一下这个类的用处,这个类主要是用来替换java中的自增和自减操作,也就是i++和++i等这个运算,为什么要使用这个类了,主要是由于i++和i--等运算是线程不安全的,所以就须要这个类来替换,接下来不多说,直接上代码,看不懂的能够參照帮助文档:

public class Test {
public static void main(String[] args) {
AtomicInteger integer = new AtomicInteger();
integer.set(1);
int i = integer.get(); //获得值
System.out.println(i);
i = integer.incrementAndGet(); //先+1,然后在返回值,相当于++i
System.out.println(i);
i = integer.getAndIncrement();//先返回值,然后在+1,相当于i++
System.out.println(i);
i = integer.get();
System.out.println(i);
i = integer.decrementAndGet();//先-1,然后在返回值,相当于--i
System.out.println(i);
i = integer.getAndDecrement();//先返回值,然后在-1,相当于i--
System.out.println(i);
i = integer.get();
System.out.println(i);//1
i = integer.addAndGet(1);//先+n,然后在返回值,
System.out.println(i);
i = integer.getAndAdd(1);//先返回,然后+n
System.out.println(i);
i = integer.get();
System.out.println(i);
}
}

输出的结果为:

1
2
2
3
2
2
1
2
2
3

最新文章

  1. iOS-关于使用其他应用打开本应用文档
  2. docker基础命令
  3. YTU 3008: 链串的基本运算
  4. POJ 1026 Cipher(置换群)
  5. eclipse配置j2ee项目
  6. html系列教程--header head iframe img
  7. 优步uber司机怎么注册不了?注册优步司机问题要点
  8. bzoj2884 albus就是要第一个出场
  9. (NO.00005)iOS实现炸弹人游戏(六):游戏数据的初始化(三)
  10. 微信小程序之onLaunch与onload异步问题
  11. 创建一个Windows服务程序与实现定时器效果
  12. Linux下批量修改后缀名
  13. ETC的发展演变
  14. ECShop全系列版本远程代码执行高危漏洞分析+实战提权
  15. uwsgi多进程配合kafka-python消息无法发送
  16. (转)awesome-text-summarization
  17. [转载] python必碰到的问题---encode与decode,中文乱码
  18. Unity3D使用碰撞体做触发器实现简单的自己主动开门
  19. 《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor
  20. tcpdump查看某个端口数据

热门文章

  1. Mojo C++ Bindings API
  2. 在vue中使用的Echarts的步骤
  3. BZOJ 3881 [Coci2015]Divljak(AC自动机+树状数组)
  4. [洛谷P1892][codevs2597]团伙
  5. vue.js的<slot>
  6. Oracle with as 嵌套
  7. Jedis无法连接centOS7上的redis
  8. LaTeX argmin argmax 下标使用方法
  9. Hadoop2.6.0配置參数查看小工具
  10. log_archive_min_succeed_dest