先上两段代码,区别仅在于是否涉及线程安全。

首先是不涉及多线程的单例:
public class Singleton {
private final static Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() {
return INSTANCE;
}
}
double check版的单例,线程安全:
public class Singleton {
private static volatile Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() {
if(INSTANCE == null){
synchronized(Singleton.class){
if(INSTANCE == null){
INSTANCE = new Singleton();
}
}
}
return INSTANCE;
}
}
1.单例的构造和指向单例的静态成员是私有的
2.单例的对外接口是共有的,一般是getInstance或者create之类的静态函数
3.单例成员可以在变量声明时创建,也可以在公共接口getInstance中创建,具体看应用场景
4.非多线程环境下不需要double check,不必过度使用模式

最新文章

  1. JAVA操作Oracle数据库中的事务
  2. iOS-程序发布-32位和64位系统的兼容
  3. (转)战斗bug技巧全攻略
  4. TCP_NODELAY详解
  5. Game of Connections
  6. PAT1118. Birds in Forest (并查集)
  7. Jmeter性能测试 如何利用SQLserver造出大批的数据
  8. 使用quaggaJS识别图片中的条形码
  9. vue 二三倍图适配,1像素边框
  10. Web Penetration Testing w3af fierce
  11. Scala断言
  12. 关于js中的回调函数callback
  13. 卸载JLink驱动弹出“could not open INSTALL.LOG file”的解决方法
  14. jquery去掉click事件
  15. 纯javascript实现选择框的全选与反选
  16. dubbo 微服务
  17. spark1.统计句子中特定内容
  18. 一文彻底明白linux中的selinux到底是什么
  19. 命令注入工具Commix
  20. mysql中的存储引擎

热门文章

  1. POJ 3074 Sudoku (Dacing Links)
  2. Tsinsen A1505. 树(张闻涛) 倍增LCA,可持久化线段树,DFS序
  3. cuda(1) 最大并发量
  4. Tomcat内存不足的解决办法
  5. Java 并发包中的读写锁及其实现分析
  6. codeforces 714C解题报告
  7. android设备连接不上电脑的解决方法
  8. 第一个小项目(天气预报软件)——称"酷狗天气"
  9. C++:复制构造函数在什么时候被调用?
  10. JMeter入门(4):Java Request实例