黑马程序员之单例模式

android培训,java培训,期待与您交流

  昨晚看毕老师讲的单例,第二天也没忘,自己写下试试。

ps:最近在网上看到好多单例说明 ,不过都是说的懒汉式好。我个人觉得恶汉式好。假设你用了单例。为什么要用单例呢你就是需要控制对象的个数。如果你不需要对方用对象的话直接都整静态的得了。既然用了一定是需要一个对象,那么你为什么不直接new出来呢 。非等到对方调用的时候再创建实例 如果创建实例的时候 程序切换出去了另一个进程进来了 就new出来了两个实例 (这是假设) 

  如果你加上了synchronized关键字锁定这样每次都需要判断严重浪费资源 。so还是直接在定义的时候new出来吧。

直接上代码:

/**
 * 恶汉式
 * @author 天下
 *
 */
class Singleton{
    private static Singleton s=new Singleton();
    private Singleton(){}
    public static Singleton createSinleton(){
        return s;
    }
}

/**
 * 懒汉式
 * @author Administrator
 *
 */
class Singleton1{
    private static Singleton1 s=null;
    private Singleton1(){}
    /**
     * 线程不安全的
     * @return
     */
    public static Singleton1 createSinleton1(){
        if(s==null){
            s=new Singleton1();
        }
        return s;
    }
    
    /**
     * 线程安全的 但时间太长
     * @return
     */
    public static synchronized  Singleton1  createSinleton2(){
        if(s==null){
            s=new Singleton1();
        }
        return s;
    }
    
    /**线程安全的 占用资源较少 双重判断 减少锁的判断次数
     * @return
     */
    public static Singleton1 createSinleton3(){
        if (s==null) {
            synchronized (s) {
                if(s==null){
                    s=new Singleton1();
                }
            }
        }
        return s;
    }
}

 

转载于:https://www.cnblogs.com/tiannullxia/archive/2013/03/25/2980200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值