最近在看JAVA方向的一些东西, 笔者这些年在C, PHP, JAVA等面向对象的语言的使用中,有一些自己的体会。 语言是没有好坏的, 只有使用的场合的合适与否。 没有哪种语言说是可以完全取代别的语言的。 JAVA从出现到现在风靡全球, 有他道理的。 想的有点多的,
最近在看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; } }
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其他的线程。
这样可以提高系统的效率。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
刺客信条阴影:贝壳谜语解决方案
3 周前ByDDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前ByDDD
在哪里可以找到原子中的起重机控制钥匙卡
3 周前ByDDD
<🎜>:死铁路 - 如何完成所有挑战
4 周前ByDDD
Atomfall指南:项目位置,任务指南和技巧
1 个月前ByDDD

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!