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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏-L-w 中级黑马   /  2014-6-25 22:24  /  1858 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        饿汉式:
        public class Singleton{
            private static Singleton singleton = new Singleton ();
            private Singleton (){}
            public Singleton getInstance(){return singletion;}
       }

     懒汉式:
       public class Singleton{
            private static Singleton singleton = null;
            public static synchronized synchronized getInstance(){
                 if(singleton==null){
                     singleton = new Singleton();
                 }
                return singleton;
            }
       }

     比较:
         饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
          懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
          推荐使用第一种







            

10 个回复

倒序浏览


你的懒汉式依旧不安全。

不如ABC三个线程,A判断>>null  进了if ,然后挂了,然后B判断,还是null,C是打酱油的。

A醒了,new Singleton(); B醒了以后还是 new Singleton();   C:老板酱油多少钱一斤啊。
回复 使用道具 举报
线程安全很重要的
回复 使用道具 举报
彭飞 发表于 2014-6-25 23:25
你的懒汉式依旧不安全。

不如ABC三个线程,A判断>>null  进了if ,然后挂了,然后B判断,还是null,C是 ...

:L哥们的也不扎实啊,函数上都加了锁,A进去没出来,B就根本进不去,只不过在函数上加锁AB每次进去都要进行判断,只能在IF弄个锁,这样A进去后创建了对象,以后AB进去就不用判断锁了会直接跳过
回复 使用道具 举报
陈云阳 发表于 2014-6-26 10:36
哥们的也不扎实啊,函数上都加了锁,A进去没出来,B就根本进不去,只不过在函数上加锁AB每次进去都要进 ...

    哥们分享一下你的心得呗!这个该怎么改呢?
回复 使用道具 举报
  1.    public static Single getInstance()
  2.     {
  3.         if(s==null)//减少锁的判断次数,提高饿汉式的效率
  4.             synchronized(Single.class)
  5.         {
  6.             if(s==null)
  7.                 s = new Single();
  8.         }
  9.         return s;
  10.     }
复制代码

这个B老师讲了俩个视频了,这是饿汉式最优的写法,面试时要是有问饿汉式要会写
回复 使用道具 举报
锦宁 中级黑马 2014-6-27 00:26:53
7#
学习了!!!!!!!加油!
回复 使用道具 举报
用饿汉式
回复 使用道具 举报
彭飞 中级黑马 2014-6-27 20:54:27
9#
陈云阳 发表于 2014-6-26 10:36
哥们的也不扎实啊,函数上都加了锁,A进去没出来,B就根本进不去,只不过在函数上加锁AB每次进去都要进 ...



学到后面你会知道了,

双if 套  synchronized   是懒汉式最安全最效率方案
回复 使用道具 举报
苏-L-w 发表于 2014-6-26 21:04
哥们分享一下你的心得呗!这个该怎么改呢?

后面讲到的

跟这视频走吧

回复 使用道具 举报
彭飞 发表于 2014-6-27 20:56
后面讲到的

跟这视频走吧

    :handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马