原子变量与CAS算法 AtomicInteger

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();
    }
}

猜你喜欢

转载自blog.csdn.net/xiaojin21cen/article/details/81805224