当前位置: 首页 > news >正文

多线程模式中的单例

单例相关知识参考《JAVA设计模式之单例模式》。单例模式,最常见的就是饥饿模式、懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象。在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保证了线程安全。

dubble check instance

//懒汉式单例类.在第一次调用的时候实例化自己 
public class Singleton {
    private Singleton() {}
    private static Singleton single=null;
    //静态工厂方法 
    public static Singleton getInstance() {
        if (singleton == null) {  
            synchronized (Singleton.class) {  
               if (singleton == null) {  
                  singleton = new Singleton(); 
               }  
            }  
        }  
        return singleton; 
    }
}

static inner class

public class Singleton {  
    private static class LazyHolder {  
       private static final Singleton INSTANCE = new Singleton();  
    }  
    private Singleton (){}  
    public static final Singleton getInstance() {  
       return LazyHolder.INSTANCE;  
    }  
}  


相关文章:

  • Semaphore信号量
  • Linux中./configure、make、make install 命令
  • 无锁并行计算框架Disruptor
  • 重入锁+读写锁+公平锁+非公平锁
  • JVM各组成部分说明+相关参数设置
  • java中垃圾回收算法+垃圾收集器
  • Linux中安装Nexus+Maven
  • Oracle数据库创建实例
  • Nginx中log_format日志格式参数及说明
  • Eclispe SVN 创建分支
  • Eclipse SVN 分支合并+代码冲突处理
  • Java中异常处理机制
  • Linux操作命令总结(六)
  • MySQL中的表连接(外连接、内连接、交叉连接、自连接)
  • location.href的用法
  • php的引用
  • [译]Python中的类属性与实例属性的区别
  • 【刷算法】求1+2+3+...+n
  • CSS实用技巧干货
  • es6--symbol
  • HashMap ConcurrentHashMap
  • JavaScript 基础知识 - 入门篇(一)
  • java第三方包学习之lombok
  • Less 日常用法
  • Magento 1.x 中文订单打印乱码
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • node学习系列之简单文件上传
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • ubuntu 下nginx安装 并支持https协议
  • vue-router 实现分析
  • 阿里云前端周刊 - 第 26 期
  • 服务器之间,相同帐号,实现免密钥登录
  • 删除表内多余的重复数据
  • 正则表达式小结
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (06)金属布线——为半导体注入生命的连接
  • (11)MATLAB PCA+SVM 人脸识别
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (windows2012共享文件夹和防火墙设置
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (剑指Offer)面试题34:丑数
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)SpringBoot3---尚硅谷总结
  • (转) ns2/nam与nam实现相关的文件
  • (转载)虚函数剖析
  • .net 反编译_.net反编译的相关问题
  • .NET开发人员必知的八个网站
  • .NET委托:一个关于C#的睡前故事
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @Bean注解详解
  • [100天算法】-实现 strStr()(day 52)