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;
    }

    }
    }

  • 相关阅读:
    4.数据库表相关操作
    2.快速创建springboot项目 连pom文件里面的配置都不用配了
    1.开始Springboot 基本配置和helloworld
    mysql 对数据库操作的常用sql语句
    mysql简单操作
    1.开始Spring
    关于java中的异常
    关于maven
    npm相关知识点
    git源代码管理工具操作步骤
  • 原文地址:https://www.cnblogs.com/micro-chen/p/10118925.html
Copyright © 2011-2022 走看看