本文主要是介绍Atomic使用示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
package com.expgiga.JUC;import java.util.concurrent.atomic.AtomicInteger;/** * 一、i++的原子性,i++的操作,分为三部分:"读-改-写" * int i = 10; * i = i++; //10 * * int temp = i; * i = i + 1; * i = temp; * * 二、原子变量:java.util.concurrent.atomic包下提供了常用的原子变量 * 1.volatile 保证内存可见性 * 2.CAS(Compare-And-Swap)算法保证数据的原子性 * CAS算法是硬件对于并发操作共享数据的支持。 * CAS包含了三个操作数: * 内存值:V * 预估值:A * 更新值:B * 当且仅当V == A, V = B,否则,不做任何操作。 */ public class TestAtomicDemo {public static void main(String[] args) {AtomicDemo ad = new AtomicDemo();for (int i = 0; i < 10; i++) {new Thread(ad).start();}} }class AtomicDemo implements Runnable {// private int serialNumber = 0; private AtomicInteger serialNumber = new AtomicInteger();@Override public void run() {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + ":" + getSerialNumber());}public int getSerialNumber() {return serialNumber.getAndIncrement();} }
这篇关于Atomic使用示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!