单例模式 (两种)及多线程下的优化

来源:互联网 发布:彩虹6号 知乎 编辑:程序博客网 时间:2024/06/08 08:49

单例模式是常用的设计模式

主要有饿汉和懒汉式 


public class SingletonTest{    public static void main(String[] args)    {        Singleton instance = Singleton.getInstance();        Singleton1 instance1 = Singleton1.getInstance();        Singleton2 instance2 = Singleton2.getInstance();        Singleton3 instance3 = Singleton3.getInstance();    }}//急速单例模式class Singleton {       private static Singleton  instance= new Singleton();     private Singleton ()  {         System.out.println("Singleton...");  }    public static Singleton getInstance()  {return instance;       } }//懒汉式单例模式class  Singleton1 {      private static Singleton1  instance = null;            private Singleton1()      {         System.out.println("Singleton1...");      }          public static Singleton1 getInstance()    {         if(instance==null)         {             instance = new Singleton1();                      }      return   instance;    }}//加上  同步方法  class  Singleton2 {      private static Singleton2  instance = null;            private Singleton2()      {         System.out.println("Singleton2...");      }                public static Singleton2 getInstance()    {            Object  obj = new Object();    synchronized (obj)    {    if(instance==null)         {             instance = new Singleton2();              }    }           return  instance;    }}//优化锁的粒度 class  Singleton3 {      private static Singleton3  instance = null;            private Singleton3()      {         System.out.println("Singleton3...");      }              public static Singleton3 getInstance()    {            Object  obj = new Object();        if(instance==null)         {       synchronized(obj)       {         if(instance ==null)         instance = new Singleton3();            }                     }              return  instance;    }}


0 0
原创粉丝点击