文档章节

单例模式

a
 ahucsxl
发布于 2015/08/29 19:43
字数 223
阅读 39
收藏 2

1、饿汉式:

/**
 * 缺点:没有达到lazy loading的效果
 */ 
public class Singleton {
 private static Singleton instance = new Singleton();
 private Singleton() {
 }
 public static Singleton getInstance() {
  return instance;
 }
}

2、懒汉式:

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

3、双重校验锁:

/**
 *双重校验锁,在当前的内存模型中无效
 */ 
class Singleton {
 private static Singleton instance = null;
 private Singleton() {
 }
 public static synchronized Singleton getInstance() {
  if (instance == null)
   synchronized (Singleton.class) {
    if (instance == null)
     instance = new Singleton();
   }
  return instance;
 }
}

4、静态内部类:

/**
 * 优点:加载时不会初始化静态变量instance ,因为没有主动使用,达到Lazy loading
 */ 
class Singleton {
 private static class SingletonHolder {
  private final static Singleton instance = new Singleton();
 }
 private Singleton() {
 }
 public static Singleton getInstance() {
  return SingletonHolder.instance;
 }
}

5、枚举:

/**
 * Effective Java》作者推荐使用的方法,优点:不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象
 */ 
enum EnumSingleton{
    instance;
    public void doSomeThing(){
    }
}

© 著作权归作者所有

上一篇: java容器类总结
下一篇: volley总结
a
粉丝 1
博文 82
码字总数 39098
作品 0
合肥
私信 提问

暂无文章

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
3
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
4
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部