单例模式(Singleton)的两种实现方式
第一种方式:
package com.test.util;public class SingletonTest {public void main(String[] args) {Singleton singleton = Singleton.getInstance();Singleton singleton2 = Singleton.getInstance();System.out.println(singleton == singleton2);}}class Singleton {private static Singleton singleton = new Singleton();private Singleton() {}public static Singleton getInstance() {return singleton;}}第二种实现方式:
package com.spring;public class SingletonTest2 {public void main(String[] args) {Singleton singleton = Singleton.getInstance();Singleton singleton2 = Singleton.getInstance();System.out.println(singleton == singleton2);}}class Singleton {private static Singleton singleton;private Singleton() {}public static Singleton getInstance() {if (singleton == null) {singleton = new Singleton();}return singleton;}}相比较而言,第一种实现方式更好更安全一些,第二种实现方式在多线程环境下有时会出现多例的错误!