千家信息网

单例模式的多线程

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,单例模式的原理:保证一个类有一个实例,并且提供一个全局的访问点(内存地址唯一)实现方式:1、饱汉模式: 1: publicclass Singleton{ 2: 3: private
千家信息网最后更新 2026年11月01日单例模式的多线程

单例模式的原理:保证一个类有一个实例,并且提供一个全局的访问点(内存地址唯一)

实现方式:

1、饱汉模式:

  1: publicclass Singleton{
  2:   
  3:    privatestatic Singleton s = null;
  4: 
  5:    private Singleton(){
  6: 
  7:    }
  8: 
  9:    publicstatic Singleton getInstance(){
 10:      
 11:       if(s ==null){
 12:         s = new Singleton();
 13:       }
 14:      return s;
 15:    }
 16: }

2、饿汉模式

  1: publicclass Singleton{
  2:   privatestatic Singleton s = new Singleton();
  3:   private Sinleton(){}
  4:   publicstatic Singleton getInstance(){
  5:    return s;
  6:    }
  7: }
单例模式的线程安全问题:
    1、通过synchronized关键字来实现
  1: publicclass Single
  2: {
  3:   privatestatic Single single ;
  4:   private Single(){
  5:   }
  6:   publicstaticsynchronized Single getInstance(){
  7:     if(single == null){
  8:       single = new Single();
  9:     }
 10:     return single;
 11:   }
 12: }
这样的话可以强制在程序运行过程中只有一个线程调用该方法获得该类的一个实例,但是缺点也是如此:只有在第一次使用该对象时需要同步,再次
获取该对象时就不需要再同步了,这时候的同步就变的多余了。
2、其实饿汉模式就是改善多线程的一种有效手段,这样JVM保证任何线程访问单例对象时,一定先创建该实例,代码同上
3、另外一种改善多线程的方式
  1: publicclass Singleton { 
  2: 
  3:     privatevolatilestatic Singleton uniqueInstance;
  4:  
  5:     private Singleton() {}
  6:         
  7:     publicstatic Singleton getInstance() { 
  8:   if(uniqueInstance == null) { //(1)
  9:         //只有第一次才彻底执行这里的代码
 10:      synchronized() {
 11:         //再检查一次
 12:         if(uniqueInstance == null)
 13:     uniqueInstance = new Singleton();
 14:         }
 15:   }
 16:          return uniqueInstance;
 17:     }
 18: }

在最开始如果有1、2、3个线程走到了(1)处,假设1进入了同步块,2、3等待。1实例化后,2进入同步块,发现uniqueInstance已经不为空,跳出同步块。接着3进入,又跳出同步块。

volatile关键字确保:当uniqueInstance变量被初始化成Singleton实例时,多个线程正确地uniqueInstance变量。如果性能是你关心的重点,那么这个做法可以帮你大大地减少getInstance()的时间耗费。

线程 同步 模式 实例 只有 对象 代码 关键 关键字 变量 方式 第一次 保证 有效 安全 这样的话 做法 全局 内存 再次 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中智农互联网科技 百单网互联网科技有限公司怎么样 华服互联网科技靠谱吗 博彦科技互联网金融 互联网科技公司华为 科技类互联网 深圳互联网络科技有限公司 期待互联网科技 以房互联网科技 互联网科技排名 无线互联网科技 奔汉互联网科技 银川新华互联网科技职业技术培训学校图片 宝灵互联网科技有限公司 成都互联网科技公司工作好不好 广州百诚互联网科技有限公司官网 领航科技大厦互联网公司 互联网科技快讯热点 兰石爱特工业互联网科技分公司 互联网科技对化妆品行业 百单网互联网科技有限公司怎么样 苏州找大状互联网科技有限公司 互联网 科技创新 善班互联网科技有限公司 火传媒上海互联网科技 青海省互联网新科技 科技与互联网的利与弊 武汉健翔互联网络科技有限公司 深圳艾果互联网通讯科技 北京军民互联网科技公司
0