黑马程序员技术交流社区

标题: 单例设计模式 [打印本页]

作者: s476596497    时间: 2014-1-20 21:45
标题: 单例设计模式
  private Single(){}
  private Single s=new Single();
  private static Single getInstance(){
      retutn s;
   }
private Single (){}
private Single s=new Single();
private static  synchronized Single getInstance(){
       return s;
  }
第二种就是加了一个同步,两种单例有什么区别?第一种单例模式是安全的,再加一个同步会不会造成资源浪费呢?
作者: 黄晓鑫    时间: 2014-1-20 21:55
哥们你的代码是错的 对外提供获取对象的方法是public类型的 资源浪费是不会 只不过第二种是为了应付面试的 因为涉及到了多线程
作者: 孤独的天奇    时间: 2014-1-20 22:01
饿汉式方式创建单例,建议用饿汉式,在多线程下也不会出现问题
private Single(){}
private Single s=new Single();
public static Single getInstance(){
      retutn s;
   }
作者: 姜胜凯    时间: 2014-1-20 22:05
本帖最后由 姜胜凯 于 2014-1-20 22:07 编辑

俩点错误。1对外提供获取对象方法,权限应该是public的。2.这种单例设计模式叫饿汉式。是不需要加同步锁的。你看一下代码,在多线程中不会出现安全问题。重复判断,浪费资源。~ 懒汉式由于是在方法中建立对象。所以在多线程中加锁。防止创建多个对象。造成线程安全问题~~
作者: 曹冬明    时间: 2014-1-20 22:35
这种权限貌似这哥们自己玩上了,谁能用啊,得留个口啊
作者: s476596497    时间: 2014-1-21 07:59
黄晓鑫 发表于 2014-1-20 21:55
哥们你的代码是错的 对外提供获取对象的方法是public类型的 资源浪费是不会 只不过第二种是为了应付面试的  ...

哥们 你要不说我还真没注意, 非常感谢对外提供的方法是为了对外提供这个类的实例化对象,不该写成私有的。




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