雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

并发时候的测试程序

Posted on 2016-12-20 19:32  huhuuu  阅读(341)  评论(0编辑  收藏  举报
package concurrency;

import java.util.concurrent.atomic.AtomicReference;

public class TestConcurrency {

    private static volatile Integer         num1 = 0;
    private static Integer         num2 = 0;
    private static AtomicReference<Integer> ar   = new AtomicReference<Integer>(num1);

    public static void dfasd111() throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(new Runnable() {

                public void run() {
                    for (int i = 0; i < 10000; i++)
                        while (true) {
                            Integer temp = ar.get();
                            if (ar.compareAndSet(temp, temp + 1)) break;
                        }
                }
            }).start();
        }
        Thread.sleep(10000);
        System.out.println(ar.get()); // 10000000
    }

    public static void dfasd1112() throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(new Runnable() {

                public void run() {
                    for (int i = 0; i < 10000; i++) {
                        num1 = num1++;
                    }
                }
            }).start();
        }
        Thread.sleep(10000);
        System.out.println(num1); // something like 238981
    }

    public static void funnum2() throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(new Runnable() {

                public void run() {
                    for (int i = 0; i < 10000; i++) {
                        num2 = num2++;
                    }
                }
            }).start();
        }
        Thread.sleep(10000);
        System.out.println(num2); // something like 238981
    }
    
    public static void main(String[] args) {

        try {
           // dfasd111();
            //dfasd1112();
            funnum2();
        } catch (InterruptedException e) {
            
            // TODO Auto-generated catch block e.printStackTrace();
            
        }

    }

}