码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式

时间:2019-11-07 09:30:57      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:锁定   nbsp   hold   加载   stat   gets   多线程   线程安全   实例   

一、单例模式的定义

单例模式:保证类只有一个实例,并提供一个它的全局访问点。

二、单例模式的三种实现方式。

饿汉式:  饿汉式由于是在类被加载时就创建了实例,不会面临线程安全问题。但是它过早的就占用了系统的资源。

    public class Singleton  {

      private static Singleton singleton =new Singleton();

      private singleton(){}

      public static  Singleton getSingleton(){

      return singleton;

       }

    }

懒汉式:懒汉式是在方法被调用时才会创建实例,实现了延迟加载,节约系统资源。但是在多线程环境下面临着线程安全的问题。需要加同步锁并且进行双重锁定的处理,才能保证线程的安全。

          public class Singleton{

      private static Singleton singleton =null;

      private singleton(){}

      public static Singleton getSingleton(){

        if(singleton==null){    

          Syschronized(Singleton.class){

       if(singleton==null){

        singleton=new Singleton();

        }     

      }

    }

      return singleton;

  }

}

Holder单例模式(工作中最常用的):跟懒汉式类似,实现了延迟加载。但是将实例的初始化放入静态内部类中,从而保证了只创建一个实例。

public class Singleton{

  private Singleton (){};

  public Singleton getSingleton(){

   return Singleton.singleton;

}

public static class Singleton{

  private static Singleton singleton= new Singleton();

}

}

 

单例模式

标签:锁定   nbsp   hold   加载   stat   gets   多线程   线程安全   实例   

原文地址:https://www.cnblogs.com/yfy-/p/11809717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!