package com.aop8.testJava;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
* <pre>
* 二、原子变量:JDK1.5后,java.util.concurrent.atomic包下提供了常用的原子变量:
* 1. volatile保证内存可见性
* 2. CAS(Compare-And-Swap)算法保证数据的原子性
* CAS算法是硬件对于并发操作共享数据的支持
* CAS包含了三个操作数:
* 内存值 V
*
* 预估值 A (将进行比较和替换时,再次读取相同的对象的值)
* 更新值 B
* 当且仅当 V == A 时, V == B 。否则,将不做任何操作
* </pre>
*/
public class TestAtomicDemo {
public static void main(String[] args) {
AtomicDemo atomicDemo=new AtomicDemo();
for (int i = 0; i < 10; i++) {
new Thread(atomicDemo).start();
}
}
}
class AtomicDemo implements Runnable{
private AtomicInteger serialNumber=new AtomicInteger(0);
public void run() {
try {
TimeUnit.MILLISECONDS.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getSerialNumber());
}
public int getSerialNumber(){
return serialNumber.getAndIncrement();
}
}
原子变量与CAS算法 AtomicInteger
猜你喜欢
转载自blog.csdn.net/xiaojin21cen/article/details/81805224
今日推荐
周排行