Java多线程中的单例模式两种实现方式

发布时间 - 2026-01-11 00:54:28    点击率:

Java多线程中的单例模式

一、在多线程环境下创建单例

方式一:

package com.ietree.multithread.sync;

public class Singletion {
  
  private static class InnerSingletion {
    private static Singletion single = new Singletion();
  }

  public static Singletion getInstance() {
    return InnerSingletion.single;
  }
}

方式二:

package com.ietree.multithread.sync;

public class DubbleSingleton {

  private static DubbleSingleton ds;

  public static DubbleSingleton getDs() {
    if (ds == null) {
      try {
        // 模拟初始化对象的准备时间...
        Thread.sleep(3000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      synchronized (DubbleSingleton.class) {
        if (ds == null) { // 这个判断很重要,如果没有那将不是单例,而是多例
          ds = new DubbleSingleton();
        }
      }
    }
    return ds;
  }

  public static void main(String[] args) {
    
    Thread t1 = new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println(DubbleSingleton.getDs().hashCode());
      }
    }, "t1");
    
    Thread t2 = new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println(DubbleSingleton.getDs().hashCode());
      }
    }, "t2");
    
    Thread t3 = new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println(DubbleSingleton.getDs().hashCode());
      }
    }, "t3");

    t1.start();
    t2.start();
    t3.start();
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java多线程中的单例模式  # java  # 单例模式  # 多线程  # java多线程之线程安全的单例模式  # Java多线程下的单例模式参考  # JAVA多线程并发下的单例模式应用  # Java多线程实战之单例模式与多线程的实例详解  # Java多线程(单例模式  # 堵塞队列  # 定时器)详解  # Java多线程常见案例分析线程池与单例模式及阻塞队列  # Java多线程案例之单例模式懒汉+饿汉+枚举  # 希望能  # 如果没有  # 很重要  # 谢谢大家  # InnerSingletion  # static  # private  # single  # ds  # getDs  # DubbleSingleton  # getInstance  # return  # Singletion  # class  # brush  # pre  # strong 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  个人网站制作流程图片大全,个人网站如何注销?  linux写shell需要注意的问题(必看)  如何在宝塔面板中修改默认建站目录?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  七夕网站制作视频,七夕大促活动怎么报名?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  如何续费美橙建站之星域名及服务?  如何用景安虚拟主机手机版绑定域名建站?  Laravel安装步骤详细教程_Laravel环境搭建指南  如何在IIS管理器中快速创建并配置网站?  Python并发异常传播_错误处理解析【教程】  bootstrap日历插件datetimepicker使用方法  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  如何快速上传自定义模板至建站之星?  Swift中switch语句区间和元组模式匹配  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel如何升级到最新版本?(升级指南和步骤)  高防服务器:AI智能防御DDoS攻击与数据安全保障  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  微信公众帐号开发教程之图文消息全攻略  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  三星网站视频制作教程下载,三星w23网页如何全屏?  实例解析angularjs的filter过滤器  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何在景安云服务器上绑定域名并配置虚拟主机?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  JavaScript模板引擎Template.js使用详解  微信小程序 配置文件详细介绍  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel如何记录自定义日志?(Log频道配置)  js实现点击每个li节点,都弹出其文本值及修改  如何快速生成专业多端适配建站电话?  Laravel如何使用Livewire构建动态组件?(入门代码)  android nfc常用标签读取总结  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何用搬瓦工VPS快速搭建个人网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  大型企业网站制作流程,做网站需要注册公司吗?