using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication1
{
class Print
{
public void printNumbers()
{
Monitor.Enter(this);
try
{
for (int i = 0; i < 10; i++)
{
Console.Write("{0}\t", i);
}
Console.WriteLine();
}
finally
{
Monitor.Exit(this);
}
}
public void printNumberslock()
{
lock (this)
{
for (int i = 0; i < 10; i++)
{
Console.Write("{0}\t", i);
}
Console.WriteLine();
}
}
}
class Program
{
static void Main(string[] args)
{
Print p = new Print();
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("thread#{0}", i);
}
foreach (Thread t in threads)
{
Console.WriteLine(t.Name );
t.Start();
}
}
}
}