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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ㄨ____陌生 于 2013-4-1 21:35 编辑

    懒汉式
         
class Single{
  private static Single s=null;
  private Single(){}
  public static Single getInstance(){
          if(s==null){
              synchonized(Single.class){
                   s=new Single();
           }  
        }
       return s;
  }
}

饿汉式
class Single{
private static final Single s=new Single();
     private Single(){}
         public static Single getInstance(){
         return s;
   }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

8 个回复

倒序浏览
我难道被封了?

点评

恩? 不会吧~ 最近登录好像都需要激活一下~  发表于 2013-4-1 21:05
回复 使用道具 举报
懒汉式和饿汉式都可以用到,看你的喜欢,懒汉式有线程安全问题,加了同步代码块虽然没有线程安全问题,但是效率降低了,因为没吃都要判断锁。饿汉式没有线程安全又简单,所以大多人喜欢用这个。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
好像这个没有严格的规定,只是你喜欢用哪种而已!一般情况下写饿汉式就好,因为简单!面试最好是写懒汉式,可以得高分!如果你要问什么时候用延迟加载,那就是在面试的时候用,开发我们老师都说用饿汉式!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
还有问题继续追问哦~  没有的话改成【已解决】哦~
回复 使用道具 举报
陈丽莉 发表于 2013-4-1 21:06
还有问题继续追问哦~  没有的话改成【已解决】哦~

在哪里改?不会改呀、
回复 使用道具 举报
ㄨ____陌生 发表于 2013-4-1 21:14
在哪里改?不会改呀、

点进自己的帖子,点“编辑”,在标题的左面有下拉菜单,可以改分类的~
回复 使用道具 举报
本帖最后由 薛飞 于 2013-4-1 21:37 编辑
ㄨ____陌生 发表于 2013-4-1 21:14
在哪里改?不会改呀、

  1. /*
  2. 单例模式方式一:
  3. 这个是先初始化对象。
  4. 称为:饿汉式。
  5. Single类一进内存,就已经创建好了对象
  6. 开发一般用饿汉式,安全又简单。
  7. */
  8. class Single1
  9. {
  10.         private static Single s=new Single();
  11.         private Single(){}
  12.         public static Single getInstance()
  13.         {
  14.                 return s ;
  15.         }
  16. }

  17. /*
  18. 单例模式方式二:
  19. 对象是方法被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式。
  20. Single类进内存,对象还没有存在,只有调用getInstance方法时,才建立对象。
  21. 一般开发没人用,但这个是面试官的最爱
  22. */
  23. class Single2
  24. {
  25.         private static Single s=null;
  26.         private Single(){}

  27.         /*
  28.         //synchronized加锁,实现互斥访问,保证程序安全,但效率降低。

  29.         public static synchronized Single getInstance()
  30.         {
  31.                 if(s==null)
  32.                         s=new Single();
  33.                 return s;
  34.         }
  35.         */

  36.         //懒汉式终极解决方案,既上锁又高效。
  37.         public static synchronized Single getInstance()
  38.         {
  39.                 if(s==null)
  40.                         synchronized(Single.class)
  41.                         {
  42.                                 if(s==null)
  43.                                         s=new Single();
  44.                         }
  45.                 return s;
  46.         }
  47. }
复制代码
回复 使用道具 举报
陈丽莉 发表于 2013-4-1 21:27
点进自己的帖子,点“编辑”,在标题的左面有下拉菜单,可以改分类的~

谢谢姐姐,那个“编辑”在最下面呢,找了半天、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马