关于Java中的单例模式

一.特色:java

①单例类只能有一个实例安全

②单例类必须本身本身建立本身的惟一实例spa

③单例类必须给全部其余对象提供这一实例线程

二.实现方法:code

①饿汉式对象

 public class Singleton1{
    private Singleton1();
    private static Singleton1 single=new Singleton1();
    public static final Singleton1 getInstance(){
        return single;
    }
 }

②懒汉式1(线程不安全)get

 public class Singleton1{
    private Singleton1();
    private static Singleton1 single=null;
    public static Singleton1 getInstance(){
        if(single==null){
            single=new Singleton1();
         }    
         return single;
     }
 }

    这种方法由于在getInstance方法中没有添加线程锁,全部当有多个线程同时访问该方法时就会产生多个Singleton1实例。class

③懒汉式2(线程安全,可是效率不高,即加入线程锁[线程锁的地方会浪费时间,若能够减小判断线程锁便可节约时间]效率

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

④懒汉式3(线程安全,效率也高,即双重判断)方法

  public class Singleton1{
    private Singleton1();
    private static Singleton1 single=null;
    public static Singleton1 getInstance(){
        if(single==null){
            synchronized(Singleton1.class){
                    if(single==null){
                        s=new Singleton1();
                     }
             }    
          }
         return single;
     }
 }
相关文章
相关标签/搜索