Java单例模式详解
的有关信息介绍如下:
单例模式是指系统中对于某类的使用只创建一个对象,不会创建多个。
【普通单例模式:不支持线程同步】
public class Singleton {
//直接初始化一个实例对象
private static Singleton sin=new Singleton();
//private类型的构造函数,保证其他类对象不能直接new一个该对象的实例
private Singleton(){
}
///该类唯一的一个public方法
public static Singleton getSin(){
return sin;
}
}
弊端:该类加载的时候就会直接new 一个静态对象出来,当系统中这样的类较多时,会使得启动速度变慢 。现在流行的设计都是讲“延迟加载”,可以在第一次使用的时候才初始化第一个该类对象。所以这种适合在小系统。
【多线程安全单例模式实例1:在方法头部使用同步关键字】
public class Singleton {
private static Singleton instance;
private Singleton (){
}
public static synchronized Singleton getInstance(){ //对获取实例的方法进行同步
if (instance == null)
instance = new Singleton();
return instance;
}
}
弊端: 这样锁住了一个方法, 粒度有点大 ,改进就是只锁住其中java类就OK
【多线程安全单例模式实例2:锁住创建对象时的java类】
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;
}
}
这是比较完善的单例模式!



