本帖最后由 于清扬 于 2014-4-14 10:41 编辑
懒汉模式,只有在自身需要的时候才会行动,从来不知道及早做好准备。它在需要对象的时候,
才判断是否已有对象,如果没有就立即创建一个对象,然后返回,如果已有对象就不再创建,立即返回。
懒汉模式只在外部对象第一次请求实例的时候才去创建。
饿汉模式,该单例类非常饿,迫切需要吃东西,所以它在类加载的时候就立即创建对象
懒汉模式,运行时获得对象的速度比较慢,但加载类的时候比较快。它在整个应用的生命周期只有一部分时间在占用资源。
饿汉模式,加载类的时候比较慢,但运行时获得对象的速度比较快。它从加载到应用结束会一直占用资源。
饿汉式:
public class Singleton{
private static Singleton singleton = new Singleton ();
private Singleton (){}
public Singleton getInstance(){return singletion;}
}
懒汉式:
public class Singleton{
private static Singleton singleton = null;
public static synchronized synchronized getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种
|