synchronized与atomic性能对比

写了两个例子,对这两种机制进行对比,发现性能差距在6倍以上。
synchronized的例子:

public class SyncInc {
    public static void main(String[] args) {
        CountDownLatch latch = new CountDownLatch(10);

        long begin = System.nanoTime();
        for (int i = 0; i < 10; i++) {
            new Thread() {
                @Override
                public void run() {
                    while (Number.get() < 100_000_000) {
                        Number.inc();
                    }

                    latch.countDown();
                }
            }.start();
        }

        try {
            latch.await();
            System.out.println("took " + (System.nanoTime() - begin) / 1_000_000 + " ms");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class Number {
    public static volatile int value = 0;
    public static synchronized void inc() {
        value++;
    }

    public static int get() {
        return value;
    }

Atomic的例子:

public class AtomicInc {
    public static void main(String[] args) {
        CountDownLatch latch = new CountDownLatch(10);

        long begin = System.nanoTime();
        for (int i = 0; i < 10; i++) {
            new Thread() {
                @Override
                public void run() {
                    while (AtomicNumber.get() < 100_000_000) {
                        AtomicNumber.inc();
                    }

                    latch.countDown();
                }
            }.start();
        }

        try {
            latch.await();
            System.out.println("took " + (System.nanoTime() - begin) / 1_000_000 + " ms");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class AtomicNumber {
    public static AtomicInteger value = new AtomicInteger(0);

    public static void inc() {
        value.incrementAndGet();
    }

    public static int get() {
        return value.get();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容