java 并发 (1):原子计数器

来源:互联网 发布:魔域帐号交易淘宝 编辑:程序博客网 时间:2024/05/24 01:43
package com.luairan.test;public class SynIncreaseInteger {private int num = 0;public int getIncreaseNum (){synchronized (this) {num++;}return num;}public static void main(String[] args) {SynIncreaseInteger  ss=new SynIncreaseInteger();Tessst t=new Tessst(ss);new Thread(t).start();new Thread(t).start();new Thread(t).start();new Thread(t).start();new Thread(t).start();}}class Tessst implements Runnable {private SynIncreaseInteger increse=null;public Tessst (SynIncreaseInteger fastIncreaseInteger){this.increse=fastIncreaseInteger;}@Overridepublic void run() {while(true){System.out.println(increse.getIncreaseNum()+"\t\t :\t"+Thread.currentThread().getId());}}  }




package com.luairan.test;import java.util.concurrent.atomic.AtomicInteger;public class FastIncreaseInteger {private AtomicInteger num =new AtomicInteger();public int getIncreaseInt(){while(true){int temp = num.get();int next = temp + 1;if(num.compareAndSet(temp, next)){return next ;}}}public static void main(String[] args) {FastIncreaseInteger  ss=new FastIncreaseInteger();Tesst t=new Tesst(ss);new Thread(t).start();new Thread(t).start();new Thread(t).start();new Thread(t).start();new Thread(t).start();}} class Tesst implements Runnable {private FastIncreaseInteger increse=null;public Tesst (FastIncreaseInteger fastIncreaseInteger){this.increse=fastIncreaseInteger;}@Overridepublic void run() {while(true){System.out.println(increse.getIncreaseInt()+"\t\t :\t"+Thread.currentThread().getId());}}  }


0 0