黑马程序员技术交流社区

标题: Java多线程 [打印本页]

作者: 箬竹小筑    时间: 2014-2-8 22:22
标题: Java多线程
今天看的Java基础视频,不能明白老师最后提到的饿汉式和懒汉式的单例设计模式,请求回答这两个模式是做什么的,用于什么地方?

作者: guhaibin    时间: 2014-2-8 22:34
单例就是一个对象或者说是有有限的对象,避免其他的程序可以过多的创建此对象,这样就可以操作特定的对象形成统一的现象。所有对象都共享同样的信息,就定义成单例模式。便于管理,安全。
饿汉式:先实例化;
懒汉式:是什么时候用到,什么时候实例化,后实例化。
作者: ↑↓ME→←    时间: 2014-2-9 09:32
经常用于只能由一个对象的类中,比如ATM机可以有很多个,但是银行只能有一个,这个银行就必须设计成单例设计模式,只能有一个对象来操作各个ATM的运行,至于这两种模式,大致差不多,不过饿汉式用的比较多,懒汉式需要涉及到线程锁定!
作者: 郭运川    时间: 2014-2-9 09:51
单例模式是为了保证只能拥有一个本类对象
例如: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;
          }}
作者: 分解式    时间: 2014-2-11 18:52
饿汉式: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则会导致对对象的访问不是线程安全的推荐使用第一种
作者: 戚晓永    时间: 2014-2-11 21:23
为了能够发帖,能够进黑马,积极看帖子,积极回帖子。
作者: 戚晓永    时间: 2014-2-11 21:34
这个看过,但是现在印象不深了,讲的是锁,防止多线程异常的,回去再复习一遍。




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