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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liuzhen 中级黑马   /  2015-3-17 22:31  /  848 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例懒汉式
class Single
{
                             private static Single s1= null;
                             private Single(){}
                             public static Single insTance()
                             {
                                            if(s1==null)
                                           {
                                           Single s1 = new Single();
                                           }
                                           return s1;
                           }
}
如果涉及到多线程就要考虑安全
饿汉式不涉及安全问题所以主要是懒汉式
懒汉式多线程安全问题解决
如下
class Single
{
        private static Single s1= null;
        private Single(){}
        public static Single insTance()
        {
                synchronized(Single.class)//因为多线程同时操作数据是两条所以不安全,要加同步代码块
                {
                        if(s1==null)
                        {
                                Single s1 = new Single();
                                
                        }
                        return s1;
                }
        }
}

如何让懒汉式更高效呢
如下
class Single
{
        private static Single s1= null;
        private Single(){}
        public static Single insTance()
        {
                    if(s1==null)//为了提高效率所以在这里就判断一下,不然每次都要判断锁。因此提高了效率
                   {
                                synchronized(Single.class)
                                
                                {
                                        if(s1==null)
                                        {
                                                Single s1 = new Single();
                                                
                                        }
                                       
                                }
                        }
                        return s1;
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马