Java中AtomicInteger的使用!!!
今天在看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
Java中AtomicInteger的使用!!!的更多相关文章
- JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用
Java 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchron ...
- java中的原子操作类AtomicInteger及其实现原理
/** * 一,AtomicInteger 是如何实现原子操作的呢? * * 我们先来看一下getAndIncrement的源代码: * public final int getAndIncremen ...
- Java中的多线程你只要看这一篇就够了
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java! 引 如果对什么是线程.什么是进程仍存有疑惑, ...
- java中关键字volatile的作用
用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来 ...
- Java中怎样创建线程安全的方法
面试问题: 下面的方法是否线程安全?怎样让它成为线程安全的方法? class MyCounter { private static int counter = 0; public static int ...
- JAVA中关于并发的一些理解
一,JAVA线程是如何实现的? 同步,涉及到多线程操作,那在JAVA中线程是如何实现的呢? 操作系统中讲到,线程的实现(线程模型)主要有三种方式: ①使用内核线程实现 ②使用用户线程实现 ③使用用户线 ...
- java编程思想-java中的并发(二)
二.共享受限资源 有了并发就可以同时做多件事情了.但是,两个或多个线程彼此互相干涉的问题也就出现了.如果不防范这种冲突,就可能发生两个线程同时试图访问同一个银行账户,或向同一个打印机打印,改变同一个值 ...
- Java中Atomic包的实现原理及应用
1. 同步问题的提出 假设我们使用一个双核处理器执行A和B两个线程,核1执行A线程,而核2执行B线程,这两个线程现在都要对名为obj的对象的成员变量i进行加1操作,假设i的初始值为0,理论上两个线程运 ...
- [转]Java中的多线程你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
随机推荐
- BZOJ 3881 [COCI2015]Divljak (Trie图+Fail树+树链的并+树状数组维护dfs序)
题目大意: Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...
- fdisk 添加逻辑分区
[root@riyimei ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommend ...
- 【BZOJ 1212】[HNOI2004]L语言
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 因为查询的字典里面.单词的最大长度为10 所以. 如果建立一棵字典树的话. 深度最多为10: 那么可以写一个DP; 设f[i]表示1 ...
- [转载]深入JVM锁机制-synchronized
转自:http://blog.csdn.net/chen77716/article/details/6618779,并加上少量自己的理解 目前在Java中存在两种锁机制:synchronized和Lo ...
- Qt之自定义布局管理器(QFlowLayout)
简述 QFlowLayout,顾名思义-流布局,实现了处理不同窗口大小的布局.根据应用窗口的宽度来进行控件放置的变化. 具体实现要求不再赘述,请参考前两节内容. 简述 实现 效果 源码 实现 QFlo ...
- 设计模式之Mediator模式(笔记)
中介者模式:用一个中介对象来封装一系列的对象交互. 中介者使各对象不须要显式的相互引用,从而使其耦合松散.并且能够独立的改变它们之间的交互. 使用场合:中介者模式一般应用于一组对象以定义良好可是复杂的 ...
- bzoj1193: [HNOI2006]马步距离(贪心+bfs)
1193: [HNOI2006]马步距离 题目:传送门 题解: 毒瘤题... 模拟赛时的一道题,刚开始以为是一道大难题...一直在拼命找规律 结果.... 还是说正解吧: 暴力的解法肯定是直接bfs, ...
- [JZOJ3383] [NOIP2013模拟] 太鼓达人 解题报告(数位欧拉)
来源:XLk 摘录 HDU2894 Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队 ...
- POJ1180 Batch Scheduling 解题报告(斜率优化)
题目链接:http://poj.org/problem?id=1180 题目描述: There is a sequence of N jobs to be processed on one machi ...
- BZOJ 1024 SCOI2009 生日快乐 暴搜
思路:eng...按照题意搜就好了 (一定要注意题面的n<=10--) 枚举断点...反正n<=10不怂 //By SiriusRen #include <cstdio> #i ...