zoukankan      html  css  js  c++  java
  • 单利模式

    单例模式
    使用单例模式Singleton(1)
    public class Singleton {
      private Singleton(){}
      //在自己内部定义自己一个实例,注意这是private
    //预加载
      private static Singleton instance = new Singleton();
      
    //这里提供了一个供外部访问本class的静态方法,
    //可以直接访问  public static Singleton getInstance() {    return instance;     }
    }

    使用单例模式Singleton(2)
    public class Singleton {
    //延迟加载
      private static Singleton instance = null;

    private Singleton (){} 
     public static synchronized Singleton getInstance() {  //这个方法比上面有所改进,不用每次都进行生成
    //对象,只是第一次使用时生成实例,提高了效率!
      if (instance==null)
       instance=new Singleton();
      return instance;   }
    }
    这种方式在多线程的情况下,由于每次获取实例的时候都要对getInstance()方法加锁,获取锁才能运行,效率会受影响。

    使用单例模式Singleton(3)
    双锁机制:
    public class Singleton {
      private static Singleton instance = null;
    private Singleton (){}
      public static Singleton getInstance(){
      if (instance==null){
    synchronized(Singleton.class) {
    if (instance == null) {
    instance = new Singleton();
    } }
    return instance;  
      }
    }这种方式只是在初始化Singleton那部分代码的时候添加同步锁,这样提高了效率。

  • 相关阅读:
    利用服务器实现疫情查询小系统(Web版+APP)
    第五周总结
    第四周总结
    初试python爬取网页数据
    使用ECharts完成数据可视化
    第三周总结
    第二周总结
    求数组中最大子数组的和
    软工第二周博客作业
    MySQL学习笔记(3)——创建、查看、修改、删除数据库
  • 原文地址:https://www.cnblogs.com/fengshaolingyun/p/6785079.html
Copyright © 2011-2022 走看看