首页 > 编程语言 > 详细

关于Java中的单例模式

时间:2014-11-01 14:56:49      阅读:291      评论:0      收藏:0      [点我收藏+]

一.特点:

①单例类只能有一个实例

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

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

二.实现方法:

①饿汉式

 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中的单例模式

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!