-
无语,单例模式,我错了?还是他?0
今天有人面试我单例:
我写如下
Public. Class. Single{
Private. Static. Single=new. Single();
Private. Single(){}
Public. Static. Single. Getintance(){
Return. Single;
}
}
面试经理说我的错了,ok,错了我就改
Private. Final. Static. Single=new. Single();
改为这样,人家还是认为我的有问题,非得还加上
Public. synchronized. Static. Single. Getintance(){
Return. Single;
}
真是无语了
2013年8月06日 19:38
14个答案 按时间排序 按投票排序
-
采纳的答案
楼主,写一个单例应该需要考虑一个重要问题,对象是怎么创建的:
1、通过构造函数创建
2、通过反射创建
3、通过反序列化创建
4、通过clone创建
提供的解决方案如下:
1、禁止外部调用构造函数 设置 private
2、禁止反射设置构造函数创建accessable,调用构造函数,可以再构造函数内判断是否已经创建过对象
3、禁止反序列化创建对象,需要重写readResolve方法
4、禁止clone,其实也不算禁止吧,重新clone,返回你的引用就OK
你看看你的单例 有没有处理这几种情况,关于synchronized,个人还是觉得需要使用,考虑到线程安全问题
代码就不贴了 楼下都有2013年8月09日 16:39
-
你的对。
但经理想考你的应该是看你能不能注意到线程同步问题。
你写的这种方式没有问题。
不过要是换到懒加载写法,同时又有线程同步问题时,必须加上synchronized2013年8月08日 10:24
-
面试经理就是个傻X 啥也不会还总JB装 这样公司趁早别去 去了也是耽误自己
最怕的就是领导啥也不会 还瞎JB指挥的 遇到了真无语2013年8月07日 13:10
-
看看这个帖子:
http://www.iteye.com/topic/652440
关于双重锁定和单例模式
Double-checked locking and the Singleton pattern
http://www.ibm.com/developerworks/java/library/j-dcl/index.html
2013年8月07日 11:25
-
你是对的,因为实例一开始就初始化出来了,这种非lazy-load的模式不需要加synchronized。
当然,及时是lazy-load方式,,我也不乐意在getInstance上加synchronized,为了防止个别极端情况下new 出多个实例,而加个sb synchronized来影响性能,太二了。2013年8月07日 08:46
-
可以参考http://raychase.iteye.com/blog/1471015
其实单例有多种写法,以前还看到一篇iteye的文章是层层递进从最简单的实现到懒加载到静态化到线程。2013年8月07日 07:47
-
public class Test(){ private static Test test=new Test(); privateTest(){} }
2013年8月07日 00:20
-
你的答案完全可以保证整个应用下只有一个实例,static修饰的,jvm内存中只有一份。详细的单例说明可以参考何海涛的《剑指offer》第二道面试题,http://ishare.iask.sina.com.cn/f/33644458.html
2013年8月06日 21:45
相关推荐
我无语了,这还不够详细吗?我无语了,这还不够详细吗?
无语网站排名批量查询工具是一款可以用于批量查询网站在搜索引擎搜索结果中的排名。 无语网站排名批量查询工具功能: 批量查询关键词在搜索引擎的排名。 支持的搜索引擎有百度、谷歌(Google)、搜狗、搜搜四款。...
《流星无语-杀窗口》是一款专为网吧和企业环境设计的经典窗口管理工具,它集成了服务端和客户端两部分,旨在帮助管理员有效地控制和管理网络中的计算机窗口。这款软件的核心功能是允许服务端远程关闭客户端计算机上...
无语网站排名批量查询工具是一款绿色的操作简单的网站排名查询工具,它可用于批量查询网站在搜索引擎中的排名。该软件支持的搜索引擎有百度、谷歌(Google)、搜狗、搜搜四个,用户可以自由选择查询一个搜索引擎的...
程序员成长非常无语,非常非常无语,无语到底
竟然还是短无语了好吗”可能是对下载文件大小的调侃,因为“短”在这里可能指文件大小较小,但实际的Java 7安装文件并不小,特别是Windows的64位版本,通常会超过百兆。 Java 7的主要新特性包括: 1. **多语言支持...
软件整理搜集来源于九尾狐 <br> <br>穿透冰点同步时间,杀非法进程,ARP绑定的工具你是不是碰到计算机时间被修改造成QQ上不去,很多游戏玩不了,连冰点都呼不出来? 你是不是很烦上网的人用这软件用那软件...
【标题】"1123无语网址导航"可能指的是一个网络收藏夹或者浏览器书签服务,它集合了各类常用网站的链接,便于用户快速访问。这类服务通常会按照类别整理网址,比如新闻、社交、购物、教育、娱乐等,为用户提供一站式...
限制单机网速的一软件。还可以禁止某些进程,相当不错的软件哦 !
无语.exe
无语 Android应用,局域网通讯工具,可在WiFi网络下应用,不使用数据流量。 界面简洁,操作简单,且有多种小工具(手电筒、扫码、计算器、GPS定位、天气,等)。 感谢使用!更新中... 如有问题,请及时反馈,谢谢亲~
无语了,随便上传了一个可爱的C++源码无语了,随便上传了一个可爱的C++源码无语了,随便上传了一个可爱的C++源码无语了,随便上传了一个可爱的C++源码
总的来说,这份“PCB最全资料”是一份涵盖广泛、深入浅出的资源,无论是对初学者还是经验丰富的工程师来说,都是一份宝贵的参考资料,可以帮助他们提升设计和制造技能,更好地理解和应对PCB领域的挑战。
初中语文文摘社会无语有三崩溃为大
标题 "无语.plus,satisfy to use" 和描述 "无语.plus,satisfy to use" 没有提供具体的IT知识点,但我们可以根据提供的标签 "综合资源 nomeam" 和压缩包内的文件名称来推测可能涉及的技术领域。 1. **V8引擎与...
在本篇文章中,我们将深入探讨如何利用jQuery实现动态的进度条效果,以此回应标题“jquery进度条啊 无语了”中所提到的问题。 进度条在网页设计中是一个常见的元素,它可以用于显示数据加载、任务执行或任何需要...
标题中的“再次无语版本”可能是指某个软件的更新版本,而“ulta plus max”可能是这个版本的一个特别命名,暗示这是一个增强版或者最高性能的版本。然而,由于这些词汇并非标准的IT术语,它们可能是开发者或团队...
《无语软件制作大师v1.0中文免费绿色版》是一款专为用户设计的轻量级软件制作工具,旨在让不具备编程基础的用户也能轻松创建自己的应用程序。该软件以其直观的可视化界面和易于理解的操作流程,降低了软件制作的门槛...
对于当前小学识字教学存在的问题,教师应当避免单一、机械的教学方法,而应该创新教学模式,激发学生的学习兴趣。教师需要关注学生的主体性,设计富有创意的教学活动,让学生在实践中体验学习的乐趣,从而达到提升...
初中语文文学讨论名著导读城市背影读夕阳无语武汉老公馆