黑马程序员技术交流社区

标题: 分享 延时加载的单例设计模式。 [打印本页]

作者: smile2015    时间: 2015-3-26 13:04
标题: 分享 延时加载的单例设计模式。
延时加载的单例设计模式?可用饿汉式和懒汉式去分析。如下
问题:饿汉式与懒汉式的不同?
       懒汉式用于实例的延迟加载,如果多线程访问时会出现安全问题。
解决:可以加同步代码块解决,但是低效,用双重判断形式提高效率问题。
       加同步时,使用的锁是哪一个?
答:该类所属的字节码对象,如synchronized(Single.class)

/*
class Single
{
        private static final Single s = new Single();
        private Single(){}
        public static Single getInstance()
        {
                return s;
        }
}
*/


//懒汉式
在多线程访问时会出现安全隐患,所以用synchronized(){},但是每次访问都要判断锁。
低效,解决方法,双重判断,减少判断次数,提高 懒汉式的效率。
因为很麻烦,所以一般选择饿汉式。

class Single
{
        private static Single s = null;
        private Single(){}


        public static  Single getInstance()
        {
                if(s==null)
                {
                        synchronized(Single.class)//注意锁的对象
                        {
                                if(s==null)
                                        //--->A;
                                        s = new Single();
                        }
                }
                return s;
        }
}

class SingleDemo
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}

作者: 466273082    时间: 2015-3-26 19:04
这个是老毕的吧
作者: poppy    时间: 2015-4-11 21:47
顶一个





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2