//饿汉式
public class Singleton {
private static final Singleton singleton = new Singleton();
private Singleton(){
System.out.println("Created Singleton!!!");
}
public static Singleton getInstance(){
return singleton;
}
}
//懒汉式
public class Singleton {
private static Singleton singleton = null;
private Singleton(){
System.out.println("Created Singleton!!!");
}
public static Singleton getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
//线程安全懒汉式
public class Singleton {
private static Singleton singleton = null;
private Singleton(){
System.out.println("Created Singleton!!!");
}
public static Singleton getInstance(){
if(singleton == null){
synchronized (Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
//静态内部类,既避免了同步带来的性能损耗,又能够延迟加载
//静态内部类在使用时才加载,在加载之前先加载外部类(若外部类已加载,则不没有此步)
//静态变量,静态方法的使用会加载类,加载类过程中会初始化静态变量
public class Singleton {
private Singleton(){
System.out.println("Created Singleton!!!");
}
private static class SingletonHodler{
private static final Singleton singleton = new Singleton();
}
public static Singleton getInstance(){
return SingletonHodler.singleton;
}
}
//枚举
public enum Singleton {
INSTANCE;
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}