首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Lazy Singleton的Java实现
【标  题】:Lazy Singleton的Java实现
【关键字】:Lazy,Singleton,Java
【来  源】:http://blog.csdn.net/asklxf/archive/2005/11/17/531406.aspx

Lazy Singleton的Java实现

由于Java的内存模型的原因,在C++中的双重检查模型在Java中不可用:

public static Singleton getInstance() {
    if(instance==null) {
        synchronized(this) {
            if(instance==null) {
                instance=new Singleton();
            }
        }
    }
    return instance;
}

如果采用synchronized方法,又会严重影响性能:

public static synchronized Singleton getInstance() {
    if(instance==null) {
        instance=new Singleton();
    }
    return instance;
}

如何实现Lazy Singleton?方法是利用Java的ClassLoader即时装载特性,使用一个SingletonHolder实现:

static class SingletonHolder {
    static Singleton instance = new Singleton();
}

public static Singleton getInstance() {
    return SingletonHolder.instance;
}

这里利用Java ClassLoader特性,在第一次加载SingletonHolder的时候初始化实例,并且保证了没有多线程并发问题。

javax.transaction.HeuristicCommitException翻译:【上一篇】
JESS专家系统的妙用:【下一篇】
【相关文章】
  • javax.transaction.HeuristicCommitException翻译
  • javax.transaction.HeuristicMixedException翻译
  • javax.transaction.HeuristicRollbackException翻译
  • javax.transaction.Synchronization翻译
  • javax.transaction.TransactionRolledbackException翻译
  • 完美解决Java程序在 MOTO E680i 中声音文件播放
  • javax.transaction.Transaction翻译
  • javax.ejb.ObjectNotFoundException翻译
  • J2ME中使用pauseApp控制手机临时退出JAVA程序
  • javax.ejb.SessionBean翻译
  • 【随机文章】
  • 以前flyback的osdiy
  • 方便你我他 不用登录QQ也能聊天
  • [J2ME Q&A]Target port denied to untrusted applications问题回应
  • 网页排版CSS教学第三章 CSS的应用补充
  • 再探游戏--天赐脚本
  • PS基础教程
  • 运行时,出现出错提示,“实时错误91,对象变量或with或块变量未设置”,如何解决?
  • Visual Basic COM基础讲座之事件
  • 使用.NET访问 Internet(3)
  • Orion App Server的安装
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.