懒汉式与饿汉式的区别

java设计模式单例模式  ----懒汉式与饿汉式的区别

常用的五种单例模式实现方式

——主要:

  1.饿汉式(线程安全,调用率高,但是,不能延迟加载。)

  2.懒汉式(线程安全,调用效率不高,可以延时加载。)

——其他:

  1.双重检测锁式(由于JVM底层内部模型原因,偶尔会出问题,不建议使用)

  2.静态内部类式(线程安全,调用效率高。但是,可以延时加载)

  3.枚举式(线程安全,调用率高,不能延时加载)

如何选用?

  ——单例对象 占用资源少,不需要 延时加载

扫描二维码关注公众号,回复: 3666309 查看本文章

    枚举式 好于 饿汉式

  ——单例对象 占用资源大,需要延时加载

    静态内部类式 好于 懒汉式

下面介绍一下 java设计模式单例模式中懒汉式与饿汉式的区别





饿汉式:
        public class Singleton{
            private static Singleton singleton = new Singleton ();
            private Singleton (){}
            public static Singleton getInstance(){return singletion;}
       } 

     懒汉式:
       public class Singleton{
          private static Singleton singleton = null;
     public static synchronized  Singleton getInstance(){
          if(singleton==null){
              singleton = new Singleton();
          }
         return singleton;
     }
       } 

     比较:
         饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
          懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
          推荐使用第一种 

猜你喜欢

转载自blog.csdn.net/qq_42809504/article/details/83063235