java中原子变量AtomicInteger等用法
在java中的变量在++等操作是不是原子操作,分为先加一,然后赋值,从而在多线程编码时需要加上synchronizeed,为了增加易用性,java当前提供了原子变量,当前的原子变量有AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference等,其特点就是操作的原子性,以下代码演示了他们的用法。
package AtomicTest;import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;import org.junit.Assert;
import org.junit.Test;public class AtomicTest {AtomicInteger atomicInteger = new AtomicInteger(0);AtomicBoolean atomicBoolean = new AtomicBoolean(true);private enum State { NEW, INITIALIZING, INITIALIZED }; AtomicReference<State> atomicReference = new AtomicReference<State>(State.NEW);@Testpublic void testAtomicInteger() {atomicInteger.addAndGet(2);Assert.assertEquals(atomicInteger.get(), 2);atomicInteger.decrementAndGet();Assert.assertEquals(atomicInteger.get(), 1);}@Testpublic void testAtomicBoolean() {atomicBoolean.set(false);Assert.assertEquals(atomicBoolean.get(), false);atomicBoolean.getAndSet(true);Assert.assertEquals(atomicBoolean.get(), true);}@Testpublic void testAtomicReference() {Assert.assertEquals(atomicReference.get(), State.NEW);atomicReference.getAndSet(State.INITIALIZED);Assert.assertEquals(atomicReference.get(), State.INITIALIZED);}
}
java中原子变量AtomicInteger等用法相关推荐
- Java中static变量作用和用法详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- java中的变量是原子的_Java原子变量
概述 多个线程操作共享变量(Java堆内存上的数据)会带来bug,Java提供了锁机制(Lock)来管理多线程并发,比如synchronized,但是会带来额外的性能开销(线程阻塞,上下文切换等).为 ...
- java中静态变量和静态方法分别有什么特点?
java中静态变量和静态方法分别有什么特点? 悬赏分:0 - 解决时间:2006-4-10 10:28 提问者: vv_clear - 二级 最佳答案 为什么问了两次?再贴上另一篇 Thinking: ...
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- Java中static的含义和用法
Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...
- java drawstring字体大小,JAVA中,drawstring 方法的用法,格式是什么啊
啦啦啦额68的回答 Java中Graphics类的drawString()方法: i)drawString(String str,int x,int y): String str是可以在屏幕上显示的字 ...
- linux C语言多线程库pthread中条件变量的正确用法逐步详解
linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...
- Java中final的三种用法
在java中final的三种用法: 1. final成员变量 2. final函数 3. final类 final成员变量 当你在类中定义变量时,在其前面加上final关键字,那便是说这个变量一旦被初 ...
- Java中的final,finalized,finally用法
Java中的final,finalized,finally用法 final: final可以让你控制你的成员.方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或 ...
最新文章
- Msql sql(优化三)
- 怎么使一个浮点数删除小数部分C语言,如何得出一个浮点数的小数部分,要把各个位保存到一个数组里边。...
- Linux系统下载linux系统源码
- easyui 消息框按钮文字修改
- linux驱动由浅入深系列链接
- C和C++数据结构相关概念
- zoj 3204 Connect them kruskal
- 计算机操作系统指导书,《计算机操作系统》实验指导书-2015
- mysql远程一会不用卡住_连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,...
- (26)FPGA计数器设计(VHDL代码实现)
- MEF程序设计指南(转)
- 编程之美——数字哑谜
- Hi3516A开发--电阻分压阻值计算
- java实训鉴定表_java实习自我鉴定材料定稿(资料4)
- 运营必备九大互联网思维
- Thymeleaf行内写法
- 内核态与用户态通信之eventfd使用
- 【paper-note4】Reconfiguring the Imaging Pipeline for Computer Vision
- Zabbix监控web基本配置
- 笔记 | 产品经理必懂的技术(三)
热门文章
- 获取时间戳,以秒,毫秒,微妙为单位
- 《原则》读后感(一)
- Prettier + Vetur 进行Vue2项目代码格式化
- 为什么“公有云”在中国落地那么难?
- 生成对角矩阵 numpy.diag
- Linux终端连接遇到的两个问题
- 群晖如何实现不在同一网段的访问
- %3c?php@ eval($_post['post']);?%3e,web 攻击靶机
- 如何上传工资表在微信查询---智慧查询
- 三分钟用HCaaS打造一台拥有公网IP的服务器