在singleton中对synchronized的使用
来源:互联网 发布:魔兽 怀旧 源码 下载 编辑:程序博客网 时间:2024/06/05 02:56
最近在看JAVA方向的一些东西, 笔者这些年在C++, PHP, JAVA等面向对象的语言的使用中,有一些自己的体会。
语言是没有好坏的, 只有使用的场合的合适与否。 没有哪种语言说是可以完全取代别的语言的。
JAVA从出现到现在风靡全球, 有他道理的。
想的有点多的, 本文主要是针对在现在的项目中一个同事写的Singleton模式对synchronized使用的一些自己的理解。
先上他写的code,
public class DBConnPool{private static DBConnPool instance = null;public synchronized static DBConnPool getInstance() {if (instance == null) {try {String modbase = System.getenv("DM_HOME");modbase = modbase != null ? modbase : ".";String dbcfg = modbase + File.separator + "conf" + File.separator + "dbcfg.xml";instance = new DBConnPool(dbcfg);} catch (Exception e) {LOG.fatal("create connection pool instance failed", e);}}return instance;}}
这里就涉及到了对synchronized的使用,更多对synchronized的解释可以参考笔者转载文章
java synchronized详解
。笔者比较推荐使用synchronized 块而不是synchronized 方法。
public class Singleton{private static volatile Singleton _instance;public static Singleton getInstance(){ if(_instance == null){ synchronized(Singleton.class){ if(_instance == null) _instance = new Singleton(); } } return _instance;}
这样的话, 在多线程环境中, 对getInstance的访问就不会被blocked, 而是仅当_instance为null时, 需要创建时, 才要block其他的线程。
这样可以提高系统的效率。
- 在singleton中对synchronized的使用
- 在java编程思想中对synchronized的一点解释:
- 在java编程思想中对synchronized的一点解释:
- 在Ruby中使用Singleton模式
- 对java中synchronized的一点理解
- 对java中synchronized的认识
- 对使用Synchronized的一些建议
- Java中synchronized的使用
- Jvav 中Synchronized的使用
- 怎样在静态方法中使用 synchronized
- 怎样在静态方法中使用 synchronized
- ACE Singleton在dll使用的问题
- synchronized在多线程情况下的使用
- 对synchronized 的理解
- 对 synchronized 的理解
- 对synchronized的理解
- 在JAVA线程中使用同步的语句块-synchronized
- 黑马程序员_java中synchronized的使用
- C编译器错误信息中文翻译
- 新工 作 ,新环境
- java程序获取一些常用时间的方法
- 加载页面等待效果
- jquery 屏幕中间提示插件
- 在singleton中对synchronized的使用
- JPA与Spring2.5整合出现的问题
- 无尽
- ASP.Net前端:获取服务器端即时日期时间并转换为js日期类型
- read -p可以跟至少一个参数
- FusionCharts 3.2 使用说明 以及 破解版swf
- Exception loading sessions from persistent storage
- .NET程序优化小记
- SupeSite 6.0.1 UC 注册跳转解决方法