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

做网站 广告 备案东莞seo

做网站 广告 备案,东莞seo,小程序开发平台多少钱,做外贸的网站都有哪些在单例设计模式中,懒汉式(Lazy Initialization) 通过延迟实例化来优化资源使用,但在多线程环境下存在线程安全问题。以下是其核心问题及解决方案的详细解析: 一、基础懒汉式代码(线程不安全) pu…

在单例设计模式中,懒汉式(Lazy Initialization) 通过延迟实例化来优化资源使用,但在多线程环境下存在线程安全问题。以下是其核心问题及解决方案的详细解析:


一、基础懒汉式代码(线程不安全)

public class Singleton {private static Singleton instance;private Singleton() {} // 私有构造器public static Singleton getInstance() {if (instance == null) {         // 步骤1:检查实例是否存在instance = new Singleton(); // 步骤2:创建实例}return instance;}
}
问题分析

当多个线程同时调用 getInstance() 时:

  1. 线程A 进入步骤1,发现 instance 为 null

  2. 线程B 同时进入步骤1,同样发现 instance 为 null

  3. 两个线程都会执行步骤2,创建多个实例,违反单例原则。


二、解决方案

1. 同步方法(线程安全,效率低)

public static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;
}
  • 优点:简单直接,确保线程安全。

  • 缺点:每次调用 getInstance() 都需要同步,性能差(99% 情况下实例已存在,无需同步)。


2. 双重检查锁(Double-Check Locking,DCL)

public class Singleton {private static volatile Singleton instance; // volatile 禁止指令重排序private Singleton() {}public static Singleton getInstance() {if (instance == null) {                  // 第一次检查(无锁)synchronized (Singleton.class) {     // 加锁if (instance == null) {          // 第二次检查(有锁)instance = new Singleton();  // 创建实例}}}return instance;}
}
关键点
  • 双重检查:减少锁竞争,只有第一次创建实例时同步。

  • volatile 关键字:禁止 JVM 指令重排序,防止返回未初始化完成的实例。

    • instance = new Singleton() 的代码实际分为三步:

      1. 分配内存空间。

      2. 初始化对象。

      3. 将 instance 指向分配的内存。

    • 若无 volatile,可能发生指令重排(步骤3在步骤2之前执行),导致其他线程获取到未初始化的实例。


3. 静态内部类(推荐)

public class Singleton {private Singleton() {}private static class Holder {private static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance() {return Holder.INSTANCE; // 类加载时初始化实例}
}
原理
  • JVM 在加载外部类时不会加载内部类,只有调用 getInstance() 时才会加载 Holder 类。

  • 类加载过程是线程安全的,由 JVM 保证,天然避免多线程问题。


4. 枚举实现(最佳实践)

public enum Singleton {INSTANCE; // 单例实例public void doSomething() {// 业务方法}
}
优点
  • 线程安全由 JVM 保证。

  • 防止反射攻击(无法通过反射创建枚举实例)。

  • 防止反序列化生成新对象。


三、方案对比

方案线程安全性能实现复杂度防反射/反序列化
同步方法
双重检查锁
静态内部类
枚举

四、总结

  • 基础懒汉式:多线程下不安全,需改进。

  • 同步方法:简单但性能差,不推荐高并发场景。

  • 双重检查锁:性能优,需配合 volatile

  • 静态内部类:推荐方案,兼顾安全与性能。

  • 枚举:最佳实践,支持防反射和反序列化。

http://www.dtcms.com/wzjs/143162.html

相关文章:

  • 重庆模板建站定制网站颜色广告
  • 晋城网站建设公司seo推广薪资
  • b2c电子商务网站的功能seo常见优化技术
  • 个人能不能自己做网站无限制访问国外的浏览器
  • 锦州网站建设网络营销推广方式都有哪些
  • 国外哪个网站做服装优化设计三年级上册答案
  • 四合一做网站网络舆情信息
  • 百度网站权重关键词长尾词优化
  • 手机音乐制作软件seo平台怎么样
  • 快速做彩平图得网站品牌营销策划书
  • 子洲网站建设平台保定百度首页优化
  • 实时定量引物设计网站怎么做店铺在百度免费定位
  • 做app的模板下载网站免费推广网站大全下载安装
  • 各大网站热搜榜排名百度推广方法
  • 上海网站推广珈维免费b站推广短视频
  • 商贸行业网站建设公司合肥seo外包平台
  • 优质的南昌网站建设百度首页排名优化多少钱
  • 看网站有没有做404百度关键词广告怎么收费
  • 桂林做网站电话号码seo的全称是什么
  • 做动画 的 网站有哪些软件下载产品营销策略
  • 电子商务网站建设的主要风险成长电影在线观看免费
  • 网站建设教程 金旭亮南宁网站建设服务公司
  • 网站排名外包广告宣传方式有哪些
  • 如何在网上赚钱seo狂人
  • 咸阳网站建设有哪些太原网络推广价格
  • 什么网站可以做装修效果图的株洲seo
  • 网站建设 艺麟盛世贵州快速整站优化
  • 社区网站如何做百度竞价优化排名
  • 一级a做爰片免费网站下载谷歌搜索引擎免费
  • 现在做一个app大概多少钱seo关键词seo排名公司