zoukankan      html  css  js  c++  java
  • C#证明静态方法中的成员在线程之间是独立的

    新建一个.NET Core控制台项目,敲入下面代码:

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace NetCoreStaticDemo
    {
        class Program
        {
            //定义静态方法Wait,将由两个线程同时执行
            static void Wait(int number)
            {
                int i = number;
                int loopCount = 0;
    
                while (true)
                {
                    Console.WriteLine("Wait() is on thread={0} i={1}", Thread.CurrentThread.ManagedThreadId.ToString(), i.ToString());
                    Thread.Sleep(1000);
    
                    loopCount++;
    
                    //循环1000次
                    if (loopCount == 1000)
                    {
                        break;
                    }
                }
            }
    
            static void Main(string[] args)
            {
                Task task1 = Task.Run(() =>
                {
                    Wait(100);//第一个线程使用100作为Wait方法的参数
                });
    
                Thread.Sleep(1000);
    
                Task task2 = Task.Run(() =>
                {
                    Wait(200);//第二个线程使用200作为Wait方法的参数
                });
    
                Task.WaitAll(task1, task2);
    
                Console.WriteLine("Press any key to end...");
                Console.ReadKey();
            }
        }
    }

    执行上面的代码,结果如下所示:

    可以看到Wait方法中的变量i,在两个线程中有不同的值100和200,这说明两个线程都有一个自己的变量值,说明静态方法Wait中的成员变量i,在两个线程中是独立的,互不影响。

  • 相关阅读:
    一文解读RESTful (转)
    一文解读Redis (转)
    一文解读JSON (转)
    一文解读单点登录 (转)
    一文解读雪碧图 (转)
    一文解读骨架屏 (转)
    一文解读MPA/SPA(转)
    一文解读HTTP2 (转)
    一文解读HTTP (转)
    HTML5中Video标签无法播放mp4的解决办法
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/13160069.html
Copyright © 2011-2022 走看看