Java 数据类型 之 线程安全的基本类型
来源:互联网 发布:python编码格式转换 编辑:程序博客网 时间:2024/05/29 02:54
在使用多线程时,就不得不考虑线程安全问题了。 对于int,long 这种基本类型,是不具有线程安全的, 所以就特别期望能有一种线程安全的基本类型,类似使用redis 那样,在多线程中也丝毫不用考虑多线程问题。 最近,突然发现了原来java 也自带了线程安全的基本类型,包括: AtomicInteger, AtomicLong, AtomicBoolean, AtomicIntegerArray,AtomicLongArray; 等,感觉实在是太棒了。
1. 测试代码
package org.zgf.test;import java.util.concurrent.atomic.AtomicInteger;public class TestAtomic {public static void main(String[] args) {AtomicInteger atomicInteger = new AtomicInteger(1);int number = 0;//getAndAdd: 先获取值,再自增10,返回值为自增前的值number = atomicInteger.getAndAdd(10);System.out.println("getAndAdd --> number:" + number + ", atomicInteger: " + atomicInteger);//getAndDecrement: 先获得值,再自减1,返回值为自减前的number = atomicInteger.getAndDecrement();System.out.println("getAndDecrement --> number:" + number + ", atomicInteger: " + atomicInteger);//getAndIncrement: 先获得值,再自增1,返回值为自增前的值number = atomicInteger.getAndIncrement();System.out.println("getAndIncrement --> number:" + number + ", atomicInteger: " + atomicInteger);//getAndSet: 先获得值,再赋值,返回值为赋值前的值number = atomicInteger.getAndSet(10);System.out.println("getAndSet --> number:" + number + ", atomicInteger: " + atomicInteger);//addAndGet: 先自增,再返回值,返回值为自增后的值number = atomicInteger.addAndGet(10);System.out.println("addAndGet --> number:" + number + ", atomicInteger: " + atomicInteger);//decrementAndGet: 先自减1,再获取返回值,返回值为自减后的值number = atomicInteger.decrementAndGet();System.out.println("decrementAndGet --> number:" + number + ", atomicInteger: " + atomicInteger);//incrementAndGet: 先自增1,再返回值,返回值为自增后的值number = atomicInteger.incrementAndGet();System.out.println("incrementAndGet --> number:" + number + ", atomicInteger: " + atomicInteger);//compareAndSet: 如果当前值为20,则设置为100boolean isSuccess = atomicInteger.compareAndSet(20, 100);System.out.println("compareAndSet: " + isSuccess);}}
2. 输出结果:
getAndAdd --> number:1, atomicInteger: 11getAndDecrement --> number:11, atomicInteger: 10getAndIncrement --> number:10, atomicInteger: 11getAndSet --> number:11, atomicInteger: 10addAndGet --> number:20, atomicInteger: 20decrementAndGet --> number:19, atomicInteger: 19incrementAndGet --> number:20, atomicInteger: 20compareAndSet: true
1 0
- Java 数据类型 之 线程安全的基本类型
- Java基础之线程安全基本数据类型
- Java之基本数据类型及类型转换
- Java基础之基本数据类型、封装类型
- Java 类型 -- 基本数据类型
- java基本数据类型-基本类型的类型转换
- JAVA的基本数据类型和类型转换
- Java的基本数据类型-布尔类型
- java的int类型线程安全
- java的int类型线程安全
- JAVA 基本类型 primitive主数据类型的包装类型
- java的数据类型——基本类型、引用类型
- Java基本类型、基本数据类型之间的转换
- JAVA_SE系列: 08.java基本数据类型之整数类型
- Java基本数据类型-浮点类型
- Java数据类型之基本数据类型
- java数据类型之基本数据类型
- Java的基本数据类型和Java的变量类型
- 在windows上安装CPU版Tensorflow
- 第一节 Scala语言初步
- BUPT OJ 寻找宝藏
- 关于IDEA的省电模式
- 关于视图
- Java 数据类型 之 线程安全的基本类型
- 对"发明一种新的树形结构数据库存储方案"的补充
- android-studio 安装gradle
- C++/JAVA版无脑模拟shipbattle
- 由线性的List生成树状的List,森林的生成算法-Java实现
- java web 之jsp基本语法
- 代理设计模式
- 【Solr】Solr配置更新索引时使用UUID
- 一起来搞机1:搞机前的准备