java面试中单例问题
2014-04-01 10:24
155 查看
public class SingltonTest { private SingltonTest() { }; private static SingltonTest st; public static SingltonTest getInstance() { // 1.3 避过同步锁方法,性能提高 if (null != st) { return st; } synchronized (SingltonTest.class) { if (null == st) { st = new SingltonTest(); } } return st; /* 最开始的版本1.1 疏忽:如果多个线程进入if,还是会出现线程安全问题 if (null == st) { synchronized (SingltonTest.class) { st = new SingltonTest(); } } return st; -------------------------------- 第二个版本1.2 缺点:每次都要使用synchronized块,性能问题 synchronized (SingltonTest.class) { if (null == st) { st = new SingltonTest(); } } return st; ------------------------------- 1.3换装 if (null == st) { synchronized (SingltonTest.class) { if (null == st) { st = new SingltonTest(); } } } return st; */ } }
如果还有更好的结构,欢迎指正!
相关文章推荐
- 求职面试的时候如何谈薪酬待遇
- 作为面试官,告诉你们互联网公司需要什么样的人
- 程序员必知的 8大排序
- 记一次高级java工程师职位的面试
- 黑马程序员-有关日期时间的总结
- 黑马程序员-有关包装类的总结
- 黑马程序员_4_如何修改TreeMap集合的root?
- 《黑马程序员》 读写锁之缓存系统
- 《黑马程序员》 读写锁的使用练习
- 面试官角度看招聘注意事项
- 程序员的恶性循环
- 黑马程序员_方法的定义,参数,返回值
- 黑马程序员_for循环的过程 结构 冒泡排序
- 黑马程序员_泛型集合
- 黑马程序员_装箱与拆箱
- 漫谈析构函数(一)——从一个面试题开始
- 黑马程序员_里氏转换
- 黑马程序员_字符串方法学习和练习
- 面试-数据库序列
- 这些年c#笔试题中碰到的呢些现在看了想拍死面试公司的冲动,你们不是玩我的吧?