设计模式—单例模式(java)

本文详细介绍了单例模式的两种实现方式:懒汉式和饿汉式。懒汉式包括线程安全的双重锁检查机制及静态内部类实现,后者无需加锁即保证线程安全;饿汉式则在类加载时即创建实例。

一:懒汉式

1:  线程安全的双重锁检查机制

public class Singleton{

   private Singleton() {}    //  私有构造函数,保证不被外界实例化(不考虑反射)

   private static Singlecton single = null;

    public static Singlecton getInstance()

    {   if (singleton == null)

            {

                   synchronized (Singleton.class)

                    { if (singleton == null)

                                 singleton = new Singleton();

                    }  

             }

            return singleton

     }

}

 

2:静态内部类:线程安全,不用加锁

     public class Singleton {

        private static class LazyHolder{

                private static final Singleton INSTANCE = new Singleton ();

        }

       private Singlecton() {}

       public static final Singlecton getInstance()

                    {

                              return LazyHolder.INSTSNCE;

                     }

}

这里总结一下静态内部类:

                            A:静态内部类,只能访问外部类的静态成员。

                            B:静态内部类可以实例化

                            C:静态内部类随着类加载而产生(在类加载的时候,静态成员就生成了)

二:饿汉式:

       public class Singleton{

            private Singlecton() {}

             pribate static final Singlecton single = new Singleton();

             public static Singlecton getInstance()

             {

                     return single;

             }

}

 

转载于:https://www.cnblogs.com/liufei1983/p/7096437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值