貌似单例模式是最简单的一种设计模式,单例的意思就是系统中对于某一个类只有一个对象,不可能出来第二个
1,不使用同步锁的单例
public class Singleton {
private static Singleton sing=new Singleton(); ///直接初始化一个实例对象
private Singleton(){ //私有的构造函数,保证其他类对象不能直接new一个该对象的实例
}
public static Singleton getSin(){ ///该类唯一的一个public方法
return sing;
}
}
这种方式的缺点是系统加载的时候会直接New出一个静态对象出来,如果系统中这种类较多时,系统性能会浪费很多,启动会变得特别慢,我们需要的是不使用他的时候不New他的实例,所以这种方式只适用于小系统
2,使用同步方法
public class Singleton {
private static Singleton instance;
private Singleton (){
}
public static synchronized Singleton getInstance(){ //对获取实例的方法进行同步
if (instance == null)
instance = new Singleton();
return instance;
}
}
synchronized是一次性锁住了一个方法,将他改进一下,只锁住一个new语句
3,多线程安全单例模式实例三(使用双重同步锁)
public class Singleton {
private static Singleton instance;
private Singleton (){
}
public static Singleton getInstance(){ //对获取实例的方法进行同步
if (instance == null){
synchronized(Singleton.class){
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}