Java 设计模式-单例模式 理论代码相结合,springmvc教程下载

    };

    Thread thread1 = new Thread(runnable);

    Thread thread2 = new Thread(runnable2);

    thread1.start();

    thread2.start();

    /**

     * 结果并不唯一,

     * 可能会出现相同,也有可能不同,多测几次,就能发现是线程不安全的。

     * 94433

     * 21648409

     */

}

}

/**

  • 懒汉式 线程不安全方式

*/

class Singleton {

/*** 构造器私有化*/

private Singleton() {}



/*** 在类的内部创建一个对象实例 随当前类加载而加载 没有线程安全问题。*/

private static Singleton singleton;



/**

 * 提供一个公有的方法

 * 当使用到这个方法时,才去创建singleton

 */

public static Singleton getInstance() {

    if(singleton==null){

        // 通过在这里堵赛的方式来模拟多线程

        try {

            Thread.sleep(1000);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        singleton= new Singleton();

    }

    return singleton;

}

}




结论及优缺:



1.  优点:起到了懒加载的效果

2.  缺点:线程不安全,如果在多线程下,第一个线程进入到`if(singleton==null)`下,但还未来的及执行,第二个线程就紧随而来也进入了`if(singleton==null)`下,那么就会创建多个实例。就不是单例模式了。

3.  建议:开发不要使用这种方式,线程安全问题不能解决,就是
上一篇:C++--22.特殊类的设计


下一篇:MySQL安装教程