JAVA设计模式之单例模式

LYKblogdream 2017-12-01 原文

JAVA设计模式之单例模式

(只适合单线程)
public class Singleton{
  private Singleton instance=null;
  private Singleton(){
  }
  public static Singleton getSingleton(){
    if(instance == null){
    instance = new Single();
    }
      return instance;
  }
}
(懒汉式单例 ->加了同步锁,适用于多线程 ---->   从而产生的问题是:
耗费时间,因为获取锁的过程很耗时)
public class Singleton{
  private Singleton instance=null;
  private Singleton(){
  }
  public static synchronized Singleton getSingleton(){
    if(instance == null){
      instance = new Single();
    }
    return instance;
  }
}

(懒汉式的优化-->只有当instance == null 是才会加同步锁,去创建实例)
public class Singleton{
  private Singleton instance=null;
  private Singleton(){
  }
  public static Singleton getSingleton(){
    if(instance == null){
      synchronized(Singleton.class){
        if(instance == null){
          instance = new Single();
        }
      }
    }
    return instance;
  }
}

(饿汉式:建议适用-->使用了静态属性-在类加载的时候就被创建,且只被创建一次)
public class Singleton{
  private static Singleton instance = new Singleton();
  private Singleton(){
  }
  public static Singleton getInsance(){
    return instance;
  }
}

(静态内部类:不怎么理解)
public class Singleton{
  private Singleton(){
  }
  private static class SingletonHolder{
    private final static instance= new Singleton();
  }
  public static Singleton getInsance(){
    return SingletonHolder.instacne;
  }
}

  

(只适合单线程)

public class Singleton{

private Singleton instance=null;

private Singleton(){

}

public static Singleton getSingleton(){

if(instance == null){

instance = new Single();

}

return instance;

}

}

(懒汉式单例 ->加了同步锁,适用于多线程 —->   从而产生的问题是:

耗费时间,因为获取锁的过程很耗时)

public class Singleton{

private Singleton instance=null;

private Singleton(){

}

public static synchronized Singleton getSingleton(){

if(instance == null){

instance = new Single();

}

return instance;

}

}

 

(懒汉式的优化–>只有当instance == null 是才会加同步锁,去创建实例)

public class Singleton{

private Singleton instance=null;

private Singleton(){

}

public static Singleton getSingleton(){

if(instance == null){

synchronized(Singleton.class){

if(instance == null){

instance = new Single();

}

}

}

return instance;

}

}

 

(饿汉式:建议适用–>使用了静态属性在类加载的时候就被创建,且只被创建一次)

public class Singleton{

private static Singleton instance = new Singleton();

private Singleton(){

}

public static Singleton getInsance(){

return instance;

}

}

 

(静态内部类:不怎么理解)

public class Singleton{

private Singleton(){

}

private static class SingletonHolder{

private final static instance= new Singleton();

}

public static Singleton getInsance(){

return SingletonHolder.instacne;

}

}

发表于 2017-12-01 10:58 我叫李元霸 阅读() 评论() 编辑 收藏

 

版权声明:本文为LYKblogdream原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/LYKblogdream/p/7940919.html

JAVA设计模式之单例模式的更多相关文章

  1. js设计模式之单例模式

    1、定义 保证一个类仅生成一个实例,并可以全局访问。 2、应用范围 单列模式应用非常广泛,有些场景下某些对象只 […]...

  2. JAVA中的设计模式四(装饰模式)

    JAVA中的设计模式四(装饰模式) ——-装饰模式   装饰模式(Decorator […]...

  3. 设计模式(十七)——迭代器模式(ArrayList 集合应用源码分析)

    1 看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有 […]...

  4. 3.java设计模式之工厂模式

    基本需求: 一个披萨店需要订购不同种类的披萨 传统方式: 实现思路 在订购类中根据用户不同的输入直接创建不同的 […]...

  5. JAVA中的设计模式三(策略模式)

    JAVA中的设计模式三(策略模式) 问题: 如何让算法和对象分开来,使得算法可以独立于使用它的客户而变化?   […]...

  6. 设计模式—单例模式

    背景:听说单例模式是进入BAT的必经之路。   单例模式: 单例模式的就是确保一个类只有一个实例(即类的对象) […]...

  7. 【极客思考】设计模式:你确定你真的理解了单例模式吗?

    摘要:单例模式是创建类型中常用的一种设计模式。该模式下的类有且仅有一个实例。 什么是单例模式? 说到单例模式, […]...

  8. 18.java设计模式之中介者模式

    基本需求 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘等 要看电视时,各个设备可以协同工作,自动完成看电视 […]...

随机推荐

  1. 关于platform_device和platform_driver的匹配【转】

    转自:http://blog.csdn.net/dfysy/article/details/5959451 版 […]...

  2. C#在线预览文档(word,excel,pdf,txt,png)

    C#在线预览文档(word,excel,pdf,txt,png) 1、预览方式:将word文件转换成html文 […]...

  3. hosts文件的作用

    hosts文件的作用 hosts文件是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网 […]...

  4. Jquery局部刷新小案列

    /* 调用showTest()方法去后台拿到处理数据后返回到part.jsp页面,main.jsp再调用htm […]...

  5. Disruptor 详解

    Disruptor 详解 想了解一个项目,最好的办法就是,把它的源码搞到本地自己捣鼓。   在网上看了 N 多 […]...

  6. session原理及实现集群session的方案原理

    对Web服务器进行集群,Session的安全和同步是最大的问题,实现Session同步有很多种方案,常见的可能 […]...

  7. 《数据库系统概念》学习笔记1

                            《第一章》 1.这一章讲述了数据库系统的一些主要优点。它有哪两 […]...

  8. Airflow自定义插件, 使用datax抽数

    Airflow之所以受欢迎的一个重要因素就是它的插件机制。Python成熟类库可以很方便的引入各种插件。在我们 […]...

展开目录

目录导航