静态方法在程序运行时 就已经实例化好了 不管多少用户并发 都一样处理,不需要排队等待,实例代码:

namespace DotNet.Example
{
using DotNet.BaseManager; public class StaticTest
{
/// <summary>
/// 定义委托
/// </summary>
/// <param name="user">用户</param>
delegate void MakeStaticDelegate(string user); /// <summary>
/// 这里是测试静态方法
/// </summary>
/// <param name="user">用户</param>
private static void MakeStaticTest(string user)
{
for (int i = 0; i < 10; i++)
{
// 输出当前的变量
System.Console.WriteLine(user + ":" + i.ToString());
System.Threading.Thread.Sleep(1000);
}
} /// <summary>
/// 这里是模拟多用户同时点击并发
/// </summary>
public void DoTest()
{
// 模拟3个用户的并发操作
MakeStaticDelegate makeStaticDelegate1 = new MakeStaticDelegate(MakeStaticTest);
makeStaticDelegate1.BeginInvoke("user1", null, null);
MakeStaticDelegate makeStaticDelegate2 = new MakeStaticDelegate(MakeStaticTest);
makeStaticDelegate2.BeginInvoke("user2", null, null);
MakeStaticDelegate makeStaticDelegate3 = new MakeStaticDelegate(MakeStaticTest);
makeStaticDelegate3.BeginInvoke("user3", null, null);
System.Console.ReadLine();
}
}

  

静态变量的话 并发就不行了 得加锁排队
可静态方法只是一段代码 理论上并不占用运行内存 并不存在并发的问题。

不管方法是否静态 只要方法中的变量有静态的 就得排队
而静态方法只是一段代码没有锁的问题

我们常见的SqlHelper也可以写成非静态方法 可是这样每次使用都得实例化一次 不是很麻烦吗? 它里头只是方法 不涉及变量 所以全用静态了
总之 涉及变量了 最好不要用静态 当然 方法内部的变量不算 我指的是public或protect的变量。

静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己的需要选择是用动态方法还是静态方法

.NET 里 静态方法的并发处理的更多相关文章

  1. 深入解析 composer 的自动加载原理 (转)

    深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状 ...

  2. 深入解析 composer 的自动加载原理

    PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演 ...

  3. C#中实现抽象类里建立静态方法

    这篇文章主要介绍了C#中实现抽象类里建立静态方法,需要的朋友可以参考下   本文简述了C#中实现抽象类里建立静态方法的解决办法,示例程序如下: 1 2 3 4 5 6 public class Tes ...

  4. 在静态方法里调用spring注入的方法

    在静态方法里直接调用非静态方法是不行的. 那如何调用spring注入的方法呢? @Component public class AutoLoginUtil {     @Autowired     p ...

  5. "静态方法里仅仅能调用静态变量和静态方法"具体解释

    静态方法里能够调用静态方法和静态变量,同一时候也能调用非静态方法和非静态变量. public class Test { public Test() {}; public Test(int i) {th ...

  6. autofac如何注册静态方法里的接口对象

    标题可能是不准确的,因为我不知道如何描述.不知道的原因,是对依赖注入一知半解. Autofac可以自动注册对象实例到接口,人所尽知.而在asp.net mvc中,这个实例化的工作,通常在每个控制器的构 ...

  7. c# 在静态方法里,怎么能得到调用者的类名?

    System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); string name = st.GetFrame(1) ...

  8. 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文难度系数为三星(★★★) 本文为第二篇 第一篇 点评阿里JAVA手 ...

  9. PHP static静态属性和静态方法

    这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

随机推荐

  1. changepassword.c 0.9:一个通过WEB界面更改LINUX用户密码的程序

    偶然看到一个用C语言写的CGI程序,可以以WEB界面(无需单独再写HTML)的方式修改用户自己的密码.该程序具有同时修改samba及squid密码的能力. 步骤: 1.下载并解压,并读一下README ...

  2. 异步加载js

    //异步加载js function loadScript(url,callback){ var script = document.createElement("script"); ...

  3. S1 : 函数

    一.做为值的函数 例如,假设有一个对象数组,我们想要根据某个对象属性对数组进行排序.而传递给数组sort()方法的比较函数要接收两个参数,即要比较的值.可是,我们需要一种方式来指明按照哪个属性来排序. ...

  4. bzoj 2244: [SDOI2011]拦截导弹

    #include<cstdio> #include<iostream> #include<algorithm> #define M 100009 using nam ...

  5. hdu 4605 Magic Ball Game

    http://acm.hdu.edu.cn/showproblem.php?pid=4605 可以离线求解 把所以可能出现的 magic ball  放在一个数组里(去重),从小到大排列 先不考虑特殊 ...

  6. 走进AngularJs(七) 过滤器(filter) - 吕大豹

    时间 2013-12-15 16:22:00  博客园-原创精华区 原文  http://www.cnblogs.com/lvdabao/p/3475426.html 主题 AngularJS 过滤器 ...

  7. ICTCLA中科院分词工具用法(java)

    摘要:为解决中文搜索的问题,最开始使用PHP版开源的SCWS,但是处理人名和地名时,会出现截断人名地名出现错误.开始使用NLPIR分词,在分词准确性上效果要比SCWS好.本文介绍如何在windows系 ...

  8. COleDateTime类型的应用

    使用COleDateTime类1) 获取当前时间.      CTime time;      time = CTime::GetCurrentTime();2) 获取时间元素.      int y ...

  9. 如何禁止在DBGRID末位自动添加一行记录

    http://www.tc5u.com/cpp/xg-1730729.htm 用DBGridEh吧,只要设置属性alopAppendEh为false即可 最简单将DBGrid的option属性中goE ...

  10. Servlet三种实现方法(四)

    开发Servlet有三种方式:1.实现Servlet接口2.通过继承GenericServlet3.通过继承HttpServlet 一.实现Servlet接口 需求如下:请使用实现 接口的方式,来开发 ...