多线程测试一些写法示例

2020-02-13  本文已影响0人  夜雨听风_b3d5

原子操作类AtomicInteger详解

转自:https://blog.csdn.net/fanrenxiang/article/details/80623884

这里运行了20个线程,每个线程对count变量进行1000此自增操作,如果上面这段代码能够正常并发的话,最后的结果应该是20000才对,但实际结果却发现每次运行的结果都不相同,都是一个小于20000的数字。这是为什么呢?

public class AtomicIntegerTest {

    private static final int THREADS_CONUT = 20;

    public static int count = 0;

    public static void increase() {

        count++;

    }

    public static void main(String[] args) {

        Thread[] threads = new Thread[THREADS_CONUT];

        for (int i = 0; i < THREADS_CONUT; i++) {

            threads[i] = new Thread(new Runnable() {

                @Override

                public void run() {

                    for (int i = 0; i < 1000; i++) {

                        increase();

                    }

                }

            });

            threads[i].start();

        }

        while (Thread.activeCount() > 1) {

            Thread.yield();

        }

        System.out.println(count);

    }

}

上一篇下一篇

猜你喜欢

热点阅读