Thread C# Tutorial

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
public class Printer {
    public void PrintNumbers() {
        lock (this) {
            Console.WriteLine("-> {0} is executing PrintNumbers()", Thread.CurrentThread.Name);
            Console.Write("Your numbers: ");
            for (int i = 0; i < 10; i++) {
                Random r = new Random();
                Thread.Sleep(1000 * r.Next(5));
                Console.Write(i + ", ");
            }
            Console.WriteLine();
        }
    }
}
class Program {
    static void Main(string[] args) {
        Printer p = new Printer();
        Thread[] threads = new Thread[10];
        for (int i = 0; i < 10; i++) {
            threads[i] = new Thread(new ThreadStart(p.PrintNumbers));
            threads[i].Name = string.Format("Worker thread #{0}", i);
        }
        foreach (Thread t in threads)
            t.Start();
        Console.ReadLine();
    }
}