关于Java中的单例模式

一.特点:

①单例类只能有一个实例

②单例类必须自己自己创建自己的唯一实例

③单例类必须给所有其他对象提供这一实例

二.实现方法:

①饿汉式

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

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

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

    这种方法因为在getInstance方法中没有添加线程锁,所有当有多个线程同时访问该方法时就会产生多个Singleton1实例。

③懒汉式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;
     }
 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。