网站大量收购闲置独家精品文档,联系QQ:2885784924

Singleton设计模式之java.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Singleton设计模式之java 在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请有哪些信誉好的足球投注网站疯狂Java;   单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。下面我们就程序说话。   public class Singleton {   private static Singleton singleton;   private Singleton() {   }   public static Singleton getInstence() {   if (singleton == null) {   singleton = new Singleton();   }   return singleton;   }   }   我们看这个程序确实实现了单例模式,但是我们有没有想过要是在多线程中的话呢,虽然在多线程中出现问题的可能性非常小,但是作为一个严谨程序员我们必须应该考虑到,那么该怎么解决呢。于是就有了下面的程序:   public class Singleton {   private static Singleton singleton;   private Singleton() {   }   public static Singleton getInstence() {   synchronized (Singleton.class) {   if (singleton == null) {   singleton = new Singleton();   }   }   return singleton;   }   }   这确实考虑考到了线程的问题,我们本来只是想让new这个操作并行就可以了,现在,只要是进入getInstance()的线程都得同步啊,注意,创建对象的动作只有一次,后面的动作全是读取那个成员变量,这些读取的动作不需要线程同步啊。这样的作法感觉非常极端啊,为了一个初始化的创建动作,居然让我们达上了所有的读操作,严重影响后续的性能啊!   所以进一步改进:   public class Singleton   {   private static final Singleton singleton;   private Singleton()   {   }   public static Singleton getInstance()   {   if (singleton==null)   {   synchronized (Singleton.class)   {   if (singleton== null)   {   singleton= new Singleton();   }   }   }   return singleton;   }   } 上面只是表面的分析单例,实际上单例模式远比这复杂多,还有各种情况,比如类加载器啊,等等。 疯狂Java培训的课程采用针对性培养,全面提升学员就业能力,重点加强训练职业素质。老师辛勤的讲解,让学员充分感受Java的魅力,充分激发每个学员对于编程的热爱,让学员在半年的时间内掌握8-10万的代码量,成为真正的技术高手,疯狂Java采用企业全真模拟开发训练,迅速积累项目经验。让学员迅速获得其他人需要花费两年才能获得的工作技能,无忧就业!

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档