码迷,mamicode.com
首页 > 编程语言 > 详细

关于Java中的单例模式

时间:2014-11-01 15:00:00      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:style   ar   java   sp   on   bs   时间   size   new   

一.特点:

①单例类只能有一个实例

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

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

二.实现方法:

①饿汉式

 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;
     }
 }

 

关于Java中的单例模式

标签:style   ar   java   sp   on   bs   时间   size   new   

原文地址:http://my.oschina.net/u/1415486/blog/339762

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