zoukankan      html  css  js  c++  java
  • lock参数变化吗

    多线程应用中经常使用lock,在使用这个关键字的时候,经常有个疑问,如果更改了当时的入参,那么是否会变化呢,下面通过代码实例测试一把

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             for (int i = 0; i < 3; i++)
     6             {
     7                 Console.WriteLine("------" + i + "-------");
     8                 new helpCommon().test(i);
     9             }
    10 
    11             Console.ReadLine();
    12         }
    13     }
    14 
    15     public class helpCommon
    16     {
    17         private static readonly object syncCertObj = new object();
    18         public void test(int i)
    19         {
    20             Thread initTest = new Thread(() =>
    21             {
    22                 lock (syncCertObj)
    23                 {
    24                     Console.WriteLine("*******" + i + "*******");
    25                     for (int j = 0; j < 5; j++)
    26                     {
    27                         Thread.Sleep(1000);
    28                         Console.WriteLine("*******" + i + "*******");
    29                     }
    30                 }
    31             });
    32             initTest.Start();
    33         }
    34     }

    主线程中发起了三个线程,但是使用通一个锁,同时改变入参 i 的值。最终结果如下

    如上图所示,当lock锁住的时候,是按照顺序执行的,同时入参 i 并没有被后面的值影响到。实践出真知。

  • 相关阅读:
    多项输入
    输出多项数据
    圆的面积
    计算并显示
    半径计算圆的周长和面积
    三角形的面积
    显示数据二进制形式
    将一批数据以二进制形式存放在磁盘文件中
    读入字符存入磁盘文件
    数组送到磁盘文件存放
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/9173573.html
Copyright © 2011-2022 走看看