关闭

单例模式

268人阅读 评论(1) 收藏 举报




(1)  /* 线程安全 但效率比较低  一开始就要加载类new一个 对象 这是饿汉方式的单例模式*/  

  public class Singleton1 { 

       private Singleton1(){  }   

       private static final Singleton1 instance=new Singleton1();  

       public static Singleton1 getInstancei(){   

            return instance;  

       } 

  } 

 

 

(2)// 饱汉(懒汉)方式的单例模式 但是有多个线程访问时就不是安全的 返回的不是同一个对   象

   public class Singleton {  

        private Singleton(){  }   

        private static Singleton instance;  

        public static Singleton getInstance() {   

                 if (instance == null)     

                      instance = new Singleton();    

                  return instance;   

         }  

   } 

 

(3)  //虽然是安全的 但是效率非常低在一个时候只有一个线程能访问  同时返回一个对象  

   public class Singleton2 {  

     private Singleton2(){  }   

     private static Singleton2 instance;   

     public static synchronized Singleton2 getInstance() {     

     if (instance == null)    

         instance = new Singleton2();   

     return instance; 

 }    

   } 

 

 

 

(4)  /* 线程安全  并且效率高  能有多个线程访问*/ 

public class Singleton3 { 

    private static Singleton3 instance; 

    private Singleton3() {  }   

    public static Singleton3 getIstance() {  

        if (instance == null) {    

               synchronized (Singleton3.class) {    

                  if (instance == null) {       

                        instance = new Singleton3();    

                  }     

                }    

         }    

        return instance;  

    }  

}  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:277次
    • 积分:14
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    阅读排行
    评论排行
    最新评论