单例模式之Java实现

来源:互联网 发布:有线网络正常没网速 编辑:程序博客网 时间:2024/06/06 16:43

单例的饿汉模式-只要类一加载该实例就被初始化
这种方式的缺点是该类加载的时候就会实例化一个静态对象,会使启动速度慢。与当前的流行的设计“延迟加载”相悖,我们可以在第一次使用时才初始化类对象。这种适合在小系统中使用。

public class Singleton{       private static Singleton instance=new Singleton();       private Singleton{       }       public static Singleton getInstance{              return instance;       }}

单例的懒汉模式-只有调用该方法的时候才创建该实例
多线程情况下以下代码不安全

public class Singleton{       private static Singleton instance;       private Singleton{                       }       public static Singleton getInstance{              if(instance==null){                  instance=new Singleton();              }             return instance;       }}

懒汉与饿汉的区别:
饿汉模式的特点是加载类时候比较慢,但是运行时获取对象的速度比较快,线程安全的
懒汉模式的特点是加载类时候比较快,但是运行时获取对象的速度比较慢,线程不安全
改进:
对懒汉模式进行加同步锁

public class Singleton{       private static Singleton instance;       private Singleton{                       }       public static Singleton getInstance{              if(instance==null){               synchronized(Singleton.class){                                    instance=new Singleton();                 }              }             return instance;       }}

可以参考如下博客总结很详细
http://cantellow.iteye.com/blog/838473

0 0