第一种方式:
第二种实现方式:
相比较而言,第一种实现方式更好更安全一些,第二种实现方式在多线程环境下有时会出现多例的错误!
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;
}
}
相比较而言,第一种实现方式更好更安全一些,第二种实现方式在多线程环境下有时会出现多例的错误!