单例模式的基本运用

来源:互联网 发布:阿里云开启3306端口 编辑:程序博客网 时间:2024/05/16 11:54

单例模式

饿汉式

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

饿汉式,提前开辟了内存空间,资源浪费。

懒汉式

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

懒汉式只有需要的时候才加载。性能差。

DCL模式

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;     } }

DCL模式资源利用率高,第一次执行方法是单例对象才会被实例化,第一次加载时会稍慢;

静态内部类实现单例模式

public class Singleton {     private static Singleton instance;     private Singleton() {     }     public static class SingletonInstance {         private static final Singleton INSTANCE = new Singleton();     }     public static Singleton getInstance() {         return SingletonInstance.INSTANCE;     } }

线程安全,且懒加载。
因为是静态内部类,所以要在有引用了以后才会装载到内存的,所以是懒加载。
线程安全,是因为类加载过程是安全的。

原创粉丝点击