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 并没有被后面的值影响到。实践出真知。

  • 相关阅读:
    简单 dp 题选做
    UVa11327
    Codeforces Round #641 (div.2) 题解
    新博客
    数位dp的学习
    stl粗略用法
    cf437C The Child and Toy
    poj1995 Raising Modulo Numbers
    Tarjan的学习
    最短路模板
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/9173573.html
Copyright © 2011-2022 走看看