单例模式的几种写法

一、饿汉式

特性:立即创建 线程安全 没有延迟加载

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

二、懒汉式

特性:延迟创建,线程不安全

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

三、加锁的懒汉式

特性:延迟创建 线程安全 同步情况下效率低

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

四、双重验证式懒汉式

特性:延迟创建 线程安全 同步情况下效率高

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

五、类加载方式

特性:延迟创建 线程安全 同步情况下效率高

    public class Single {
    private Single(){}
    private static class ClassHolder{
        private static Single instance=new Single();
    }
    public static Single getInstance(){
        return ClassHolder.instance;        
    }
    }

六、枚举方式

特性:原生防止反射和反序列化击穿

    public enum Single{
        INSTANCE;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.饿汉private static Singleton instance=new Singleton();或pr...
    蓝灰_q阅读 4,353评论 0 0
  • 第一种(懒汉式,线程不安全):public class Singleton {private static Sin...
    yljava阅读 9,439评论 0 0
  • 单例模式要点 私有的构造方法 指向实例的私有静态引用 获取实例对象的公有静态方法 饿汉模式(非线程安全) 懒汉模式...
    sunxiaohang阅读 4,223评论 1 8
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 9,783评论 4 34
  • 最近雨水盈盈,愈发慵懒,若有所思。不念朝阳,不贪晌午,只想晒晒太阳,做做白日梦。想必多进行“光合作用”,估摸着也...
    白沐流云阅读 4,676评论 0 48