您的位置首页生活百科

Java单例模式详解

Java单例模式详解

的有关信息介绍如下:

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;

}

}

这是比较完善的单例模式!