最近在整理 Java 的多线程相关的技术,这里备份下关于【 Atomic* 】代码。
github:
【 https://github.com/cstriker1407/think_in_java 】
CONTENTS
AtomaticTest.java类
public class AtomaticTest { public static void test() { AtomicInteger money = new AtomicInteger(100); MoneyAdd t1 = new MoneyAdd(0, money); MoneyAdd t2 = new MoneyAdd(1, money); MoneyAdd t3 = new MoneyAdd(2, money); MoneyAdd t4 = new MoneyAdd(3, money); t1.start(); t2.start(); t3.start(); t4.start(); } } class MoneyAdd extends Thread { int id; AtomicInteger money = null; public MoneyAdd(int id, AtomicInteger money) { super(); this.id = id; this.money = money; } @Override public void run() { for (int i = 0; i < 5; i++) { int add = new Random().nextInt(100); int total = money.addAndGet(add); System.out.println("线程"+ id + " 增加了"+ add +" 当前有" + total + "原始:" + (total - add)); try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } } }
部分日志打印:
线程0 增加了68 当前有168原始:100 线程3 增加了87 当前有418原始:331 线程2 增加了79 当前有331原始:252 线程1 增加了84 当前有252原始:168 线程1 增加了54 当前有472原始:418 线程0 增加了17 当前有554原始:537 线程3 增加了28 当前有500原始:472
发表评论