单件模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 单件模式

单件模式

 2012/2/17 9:26:19  thaIm  程序员俱乐部  我要评论(0)
  • 摘要:一)什么是单件模式很简单,使代码只能实例化一个实例的设计模式。怎么做,看个典型样例:如上图,把握3个注意点吧:1)uniqueInstance必须用privatestatic修饰2)构造函数必须private3)函数getInstance()必须static二)单件模式的多线程处理显然,以上单件模式的代码不支持多线程。(如何多线程冲突的这里就不多解释了,出问题的就是:if(uniqueInstance==null){uniqueInstance=newSingleton();}这句啦
  • 标签:模式 单件模式
一) 什么是单件模式
     很简单,使代码只能实例化一个实例的设计模式。怎么做,看个典型样例:



    如上图,把握3个注意点吧:
    1)uniqueInstance 必须用 private static 修饰
    2)构造函数必须 private
    3)函数getInstance() 必须 static

二)单件模式的多线程处理
    显然,以上单件模式的代码不支持多线程。(如何多线程冲突的这里就不多解释了,出问题的就是:if( uniqueInstance == null) { uniqueInstance = new Singleton(); } 这句啦 )
    解决方法也很简单,在函数getInstance()前增加线程保护:synchronized 就ok啦

三)多线程单件模式的优化原则
    多线程的处理是十分简单,但它也带来性能降低的问题。如何优化? 原则有三:
    1)如果性能对应用程序不是很重要,忘了优化吧,就这样吧~~哈哈
    2)采用急切创建实例:

    3)三重检查加锁:


    这个方案要特别注意哦:
    1、volatile修饰符哦。
    2、不适用于1.4及更早的java版本
  • 大小: 248.6 KB
  • 大小: 134.1 KB
  • 大小: 239.4 KB
  • 查看图片附件
发表评论
用户名: 匿名