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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© s476596497 中级黑马   /  2014-1-20 21:45  /  1319 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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;
  }
第二种就是加了一个同步,两种单例有什么区别?第一种单例模式是安全的,再加一个同步会不会造成资源浪费呢?

评分

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

查看全部评分

5 个回复

倒序浏览
哥们你的代码是错的 对外提供获取对象的方法是public类型的 资源浪费是不会 只不过第二种是为了应付面试的 因为涉及到了多线程
回复 使用道具 举报
饿汉式方式创建单例,建议用饿汉式,在多线程下也不会出现问题
private Single(){}
private Single s=new Single();
public static Single getInstance(){
      retutn s;
   }

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 姜胜凯 于 2014-1-20 22:07 编辑

俩点错误。1对外提供获取对象方法,权限应该是public的。2.这种单例设计模式叫饿汉式。是不需要加同步锁的。你看一下代码,在多线程中不会出现安全问题。重复判断,浪费资源。~ 懒汉式由于是在方法中建立对象。所以在多线程中加锁。防止创建多个对象。造成线程安全问题~~

评分

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

查看全部评分

回复 使用道具 举报
这种权限貌似这哥们自己玩上了,谁能用啊,得留个口啊
回复 使用道具 举报
黄晓鑫 发表于 2014-1-20 21:55
哥们你的代码是错的 对外提供获取对象的方法是public类型的 资源浪费是不会 只不过第二种是为了应付面试的  ...

哥们 你要不说我还真没注意, 非常感谢对外提供的方法是为了对外提供这个类的实例化对象,不该写成私有的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马