JAvaマルチスレッドでの原子操作
1482 ワード
原子操作はあまり使われないかもしれませんが、マルチスレッドの章にも属しているので、記録がいいです.
package ;
import java.util.concurrent.atomic.AtomicInteger;
/*
*
* ,
* ,
* */
public class TestMyAtomic {
static int index = 0;
static int num = 10000;
static AtomicInteger atomicIndex = new AtomicInteger(0);// 0
public static void main(String[] args) {
//
// index++
// index++
Thread[] threads = new Thread[num];
for (int i = 0; i < num; i++) {
Thread t = new Thread() {
@Override
public void run() {
index++;
}
};
t.start();
threads[i] = t;
}
for (Thread t : threads) {
try {
// t ,
t.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(index);
//
//
Thread[] threadsAtomic = new Thread[num];
for (int i = 0; i < num; i++) {
Thread t = new Thread() {
@Override
public void run() {
atomicIndex.incrementAndGet();
}
};
t.start();
threadsAtomic[i] = t;
}
for (Thread t : threadsAtomic) {
try {
// t ,
t.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(atomicIndex.intValue());
}
}