A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© forTomorrow 中级黑马   /  2015-6-5 14:23  /  418 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
* 饿汉式
*
*/
class SingleHungry {
    private static final SingleHungry sH = new SingleHungry();//final修饰表示对变量常量化,不可改变其值
    private SingleHungry(){//私有化构造函数,不可通过new来创建对象
        
    }
    public static SingleHungry getInstance(){//静态函数,表示通过类名.函数  调用该函数达到创建单例对象的效果
        return sH;
    }
}

/**
* 懒汉式
*
*/
class SingleLazy{
    private static SingleLazy sL = null;//注意:这里不能加final修饰,因为final修饰后该变量就该常量化,后面的程序不可改变其值了
    private SingleLazy(){//私有化构造函数,不可通过new来创建对象        
    }
    public static SingleLazy getInstance(){
        if(sL==null){//为了提高效率,优化加同步锁造成的效率问题
            synchronized(SingleLazy.class){
                if(sL== null)//对多线程中的共有数据进行同步,以达到单例的效果
                    sL= new SingleLazy();
            }   
        }
        return sL;
    }
}

4 个回复

倒序浏览
学习一下   
回复 使用道具 举报
多线程中的单例设计模式确实很棒!
回复 使用道具 举报
今天刚学,复习下
回复 使用道具 举报
学习学习。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马