原子操作数组类AtomicIntegerArray
基本数据定义数组 :int [] intArray= new int[100];
原子类型定义数组: AtomicInteger [] aiArray= new AtomicIntegre[100];
两者所定义的形式并未不同,知识类型不同而已。
JDK中提供了操作原子数组的类:AtomicIntegerArray
该类的定义如下:
AtomicIntegerArray aia = AtomicIntegerArray(100);
也可以将一个普通的数组转化为原子数组,例如:
AtomicIntegerArray aia = new AtomicIntegerArray(intArray);
类AtomicIntegerArray有两个构造方法:
1)AtomicIntegerArry(int length); //创建给定长度的数组
2) AtomicIntegerArray( int[] array);//创建与给定长度相同长度的新的原子类数字,并从给定数组复制其所有的元素。
Demo示例:
多个线程对同一数组进行操作,使用原子操作为数组的每一个元素增1。
public class Worker extends Thread{
AtomicIntegerArray aia;
public Worker( String name, AtomicIntegerArray aia){
this.aia = aia;
setName( name );//设定线程名称
}
public void run(){
for(int i=0;i<aia.length();i++){
//该方法是以原子的方式在索引i的元素加1
aia.incrementAndGet(i);
}
System.out.println(getName()+"执行完毕!");
}
}
public class Index{
public static void main(String [] args){
AtomicIntegerArray aia = new AtomicIntegerArray(10000);
for(int i =0;i<10000;i++){
aia.set(i,0);//将给定位置的元素,设置为给定的值。
}
System.out.println("初始化完毕!");
Thread w1 = new Worker("工人一",aia);
Thread w2 = new Worker("工人二",aia);
Thread w3 = new Worker("工人三",aia);
Thread w4 = new Worker("工人四",aia);
w1.start();
w2.start();
w3.start();
w4.start();
try{
w1.join();
w2.join();
w3.join();
w4.join();
}catch(InterruptedException e){
e.printStackTrace();
}
for(int i=0;i<10000;i++){
if(aia.get(i)!=4){
System.out.println("验证失败!");
break;
}
}
}
}
- 点赞
- 收藏
- 分享
- 文章举报
- java并发编程:线程安全管理类--原子操作类--AtomicIntegerArray
- gcc原子操作,AtomicIntegerT , gcc编译选项(11)
- Java多线程之JUC原子类 - 以原子方式操作数组AtomicLongArray
- 原子操作 AtomicInteger
- 关于原子操作AtomicInteger、AtomicBoolean等
- java i++ 并非原子操作的解决方法——用AtomicInteger
- JUC源码分析2-原子变量-AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray
- gcc原子操作,AtomicIntegerT , gcc编译选项(11)
- Java原子操作AtomicInteger的用法
- Java原子操作AtomicInteger的用法
- java i++ 并非原子操作的解决方法——用AtomicInteger
- Java原子操作AtomicInteger的用法
- Java 原子操作类详解(AtomicInteger、AtomicIntegerArray等)
- java.util.concurrent(JUC)的研究--》atomic原子操作--》从AtomicInteger开始
- Atomic Builtins - Using the GNU Compiler Collection (GCC) GCC 提供的原子操作
- Java中对AtomicInteger和int值在多线程下递增操作的测试
- C++11多线程(十二):《atomic 类型详解四:C 风格原子操作介绍》
- ACE学习(二)原子操作与ACE_Atomic_Op
- AtomicIntegerArray 源码分析
- java中的原子操作类AtomicInteger及其实现原理