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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

箬竹小筑

初级黑马

  • 黑马币:0

  • 帖子:6

  • 精华:0

© 箬竹小筑 初级黑马   /  2014-2-8 22:22  /  1378 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看的Java基础视频,不能明白老师最后提到的饿汉式和懒汉式的单例设计模式,请求回答这两个模式是做什么的,用于什么地方?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
单例就是一个对象或者说是有有限的对象,避免其他的程序可以过多的创建此对象,这样就可以操作特定的对象形成统一的现象。所有对象都共享同样的信息,就定义成单例模式。便于管理,安全。
饿汉式:先实例化;
懒汉式:是什么时候用到,什么时候实例化,后实例化。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
经常用于只能由一个对象的类中,比如ATM机可以有很多个,但是银行只能有一个,这个银行就必须设计成单例设计模式,只能有一个对象来操作各个ATM的运行,至于这两种模式,大致差不多,不过饿汉式用的比较多,懒汉式需要涉及到线程锁定!
回复 使用道具 举报
单例模式是为了保证只能拥有一个本类对象
例如:Runtime类中的函数只能创建一个对象
  
多线程下的单例
  //饿汉式
  class Single{
          private static final Single s = new Single();
          private Single(){}
          public static Single getInstance(){
                  return s;
          }}
  //懒汉式
  加入同步为了解决多线程安全问题。
  加入双重判断是为了解决效率问题。
  class Single{
          private static Single s = null;
          private Single(){}
          public static Single getInstance(){
                  if(s==null){
                          synchronized(Single.class)                {
                                  if(s==null)
                                          s = new Single();
                          }
                  }return s;
          }}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
饿汉式: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则会导致对对象的访问不是线程安全的推荐使用第一种
回复 使用道具 举报
为了能够发帖,能够进黑马,积极看帖子,积极回帖子。
回复 使用道具 举报
这个看过,但是现在印象不深了,讲的是锁,防止多线程异常的,回去再复习一遍。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马