单例模式之模拟多线程高并发

之前写过的几种常用的单例模式,现在就其中认为最好的一种进行一次模拟多线程高并发的展示:

/**
 * 模拟线程并发
 *
 */
public class TestThread {
    public static void main(String[] args) {
        //启动一百个线程同时去抢占cpu,有可能产生并发
        int count = 100;

        //利用发令枪操作
        CountDownLatch countDownLatch = new CountDownLatch(count);
        for (int i = 0; i < count; i++) {
            new Thread() {
                public void run() {
                //展示时间戳+引用的单例
                //以下Singleton4为之前博客写的用静态类实现的那种
                    System.out.println(System.currentTimeMillis() + ":" + Singleton4.getInstance());
                }
            }.start();
            //递减锁存器的计数,如果计数到达零,则释放所有等待的线程
            countDownLatch.countDown();
        }
        try {
            //使线程在锁存器倒计数至零之前一直等待
            countDownLatch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

这段代码走完,电脑差点没扛住,下面截图证明了同一时间出现了高并发,但是都是同一个单例,说明此单例是合格的

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_36413562/article/details/78777524