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

csharp设计方法


public class hugryman

私有构造

private hugryman()

私有静态只读实例化

private static readonly hugryman _hugryman=new hugryman();

公有静态读取方法

public static hugryman()

return _hungryman 

多次获取的是同一个实例

gethashcode发现是同一个对象

数值一样



缺点 

一开始就实例化 浪费性能




改懒汉式

layman 

私有构造

私有静态字段

private static _layman 

公有静态读取同时实例化

在getlazyman里面实例化

null的时候创建  防止多次实例化

(都要静态)



缺点  

会重复创建   

如果多个程序同时进入,会实例化多次

重复实例化的缺点

改进方法:

var obj=new object()

lock(obj)

{

}

花括号的内容只允许一个线程进行

 

例子

private static layman _layman 

public static layman getlazyman()

lock(o){

if (_layman==NULL)

{_lazyman=new lazyman()}

}

return _layman 

 

lock实际上是

monitor.enter()

monitor.exit()

 

防止指针重排的方法

volatile 



饿汉式的改造方法

静态内部类

hugrymanstatic

private hungrymanstatic()

private static class innerclass()

{

var _hungrymanstatic=new hungrymanstatic()

}

public static Gethungrymanstatic()

{

return _hungrymanstatuc 

}

静态内部类  只在类加载的时候创建一次实例

不会浪费资源



 

http://www.dtcms.com/a/249501.html

相关文章:

  • Qt--信号槽发送QVector
  • 专注于PLC数据采集MES交互解决方案
  • Redis集群模式之Redis Cluster(3)
  • 【0.2 漫画操作系统原理】
  • 从0开始学习R语言--Day23--稳健回归
  • volka烹饪常用英语
  • Salesforce 推出Marketing Cloud Next营销云
  • Docker 部署 PostgreSQL 指南
  • 0x-5-ORA-03113-ORA-01081-记一次删归档改spfile-开实例
  • Vue3中v-bind指令用法详解
  • 论文略读: CITYANCHOR: CITY-SCALE 3D VISUAL GROUNDING WITH MULTI-MODALITY LLMS
  • 渲染进阶内容——机械动力的渲染(1)
  • 小程序跳转链接实战:https://wxaurl.cn/、weixin://dl/business/ 跳转与明文 URL Scheme 生成指南
  • MaxCompute的Logview分析详解
  • K8S 专栏 —— Pod 篇
  • 人工智能学习20-Pandas-自定义的函数
  • 单片机电路设计
  • 剖析电商搜索要点并基于Es+Redis模拟电商搜索行为
  • 滚珠螺杆的预紧间隙如何调整?
  • python基础举例
  • 地理数据库 gdb mdb sde 名称的由来
  • gpt3大模型蒸馏后效果会变差么
  • MySQL从库复制延迟的监测
  • 如何在 ArcGIS 中使用 Microsoft Excel 文件_20250614
  • 青少年编程与数学 01-011 系统软件简介 20 编译系统
  • VMware虚拟机集群上部署HDFS集群
  • 【消息队列】——消息队列的高可用与容灾设计
  • RabbitMQ 知识详解(Java版)
  • FastGPT实战:从0搭建AI知识库与MCP AI Agent系统
  • 每日算法刷题Day31 6.14:leetcode二分答案2道题,结束二分答案,开始枚举技巧,用时1h10min