单例模式
一个类只能创建一个对象
饿汉式 – 可能会浪费空间,并发效率高
class Singleton{
private static Singleton o = new Singleton();
private Singleton(){}
public static Singleton getSingleton(){
return o;
}
}
懒汉式–可能会浪费空间,并发效率低
class Singleton{
private static Singleton o = null;
private Singleton(){}
public static synchronized Singleton getSingleton(){
if(o == null){
o = new Singleton();
}
return o;
}
}
双重校验锁–在保证线程安全的情况下,尽可能的提高并发效率
class Singleton{
private static Singleton o = null;
private Singleton(){}
public static Singleton getSingleton(){
if(o == null){
synchronized(Object.class) {
if(o==null){
o = new Singleton();
}
}
}
return o;
}
}
懒加载–静态内部类实现
class Singleton{
private Singleton(){}
private static class innerClass{
static Singleton singleton = new Singleton();
}
public static Singleton getSingleton(){
return innerClass.singleton;
}
}