package com.dwz.atomic; import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; /** * AtomicInteger * 可见性 * 有序性 * 原子性 */ public class AtomicIntegerTest { public static void main(String[] args) throws InterruptedException { Set<Integer> set = Collections.synchronizedSet(new HashSet<Integer>()); AtomicInteger value = new AtomicInteger(); Thread t1 = new Thread() { @Override public void run() { int x = 0; while(x < 500) { int v = value.getAndIncrement(); set.add(v); System.out.println(Thread.currentThread().getName() + ":" + v); x++; } } }; Thread t2 = new Thread() { @Override public void run() { int x = 0; while(x < 500) { int v = value.getAndIncrement(); set.add(v); System.out.println(Thread.currentThread().getName() + ":" + v); x++; } } }; Thread t3 = new Thread() { @Override public void run() { int x = 0; while(x < 500) { int v = value.getAndIncrement(); set.add(v); System.out.println(Thread.currentThread().getName() + ":" + v); x++; } } }; t1.start(); t2.start(); t3.start(); t1.join(); t2.join(); t3.join(); System.out.println(set.size()); } }
原文:https://www.cnblogs.com/zheaven/p/12981777.html