zoukankan      html  css  js  c++  java
  • C# 多线程调用静态方法或者静态实例中的同一个方法-方法内部的变量是线程安全的

     C#  多线程调用静态方法或者静态实例中的同一个方法-方法内部的变量是线程安全的

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Diagnostics;
    using System.Reflection;

    namespace MulThreadTest
    {
    class MainClass
    {

    public static void Main (string[] args)
    {

    for (int i = 0; i < 2; i++) {
    var th=new Thread(
    new ParameterizedThreadStart((state)=>{
    DoHelper.Instance.SayHello(state.ToString());
    })
    );
    th.Start (i);
    }

    Console.ReadKey ();

    }


    }

    public class DoHelper{

    public static DoHelper Instance=new DoHelper();

    public string SayHello(string id){

    string res = "调用Id:" + id;
    StackTrace trace = new StackTrace(true);
    StackFrame frame = trace.GetFrame(1);//1代表上级,2代表上上级,以此类推
    MethodBase method = frame.GetMethod(); //获得当前方法名称


    Console.WriteLine (res);
    Console.WriteLine ("当前方法的Hash code: "+method.GetHashCode());
    /*if (id=="1") {
    System.Threading.Thread.Sleep (5000);
    }
    */
    System.Threading.Thread.Sleep (1000);


    Console.WriteLine ("当前线程上下文Id:"+Thread.CurrentContext.ContextID);
    Console.WriteLine ("当前线程Id:"+Thread.CurrentThread.ManagedThreadId);
    Console.WriteLine ("当前时间:"+DateTime.Now.ToString());
    Console.WriteLine ("当前Trace hashcode :"+trace.GetHashCode());//Variables declared inside methods (with the possible exception of "captured" variables) are isolated,


    return res;
    }

    }
    }

  • 相关阅读:
    操作系统第一天学习
    进制之间的转换
    git的使用
    Python 第二天学习(文件的处理)
    下载博客首页的博客列表
    获取所有的列表
    抓取指定博客的内容
    进程简介
    python 内置函数range和xrange
    关于read的例子和条件测试
  • 原文地址:https://www.cnblogs.com/micro-chen/p/10118925.html
Copyright © 2011-2022 走看看