title: creating new threads in a loop
body: <p>I'm trying to understand why this code is not working.</p>
  
  <pre><code>    private static object _lock;
  
      public static void Main (string[] args)
      {
          Thread thread;
          _lock = new object();
  
          foreach (int num in Enumerable.Range(0,5)) {
              thread  = new Thread (() =&gt; print(num.ToString()));
              thread.Start(); 
          }
      }
  
      public static void print(string text)
      {
          lock(_lock)
          {
              Console.WriteLine(text);
          }
      }
  </code></pre>
  
  <p>I end up with an output of</p>
  
  <p>4
  1
  4
  4
  3</p>
  
  <p>or any other random number of digits. Why does it repeat digits?</p>