I create an example about thread,
I know that use lock could avoid thread suspending at critical section, but I have two questions.
1.Why my program get stuck if I use Thread.Sleep?
In this example, I add sleep to two thread.
 Because I wish the console output more slowly, so I can easily see if there's anything wrong.
 But if I use Thread.Sleep() then this program will get stuck!
2.What situation should I use Thread.Sleep?
Thanks for your kind response, have a nice day.
    class MyThreadExample
{
    private static int count1 = 0;
    private static int count2 = 0;
    Thread t1;
    Thread t2;
    public MyThreadExample() {
        t1 = new Thread(new ThreadStart(increment));
        t2 = new Thread(new ThreadStart(checkequal));
    }
    public static void Main() {
        MyThreadExample mt = new MyThreadExample();
        mt.t1.Start();
        mt.t2.Start();
    }
    void increment()
    {
        lock (this)
        {
            while (true)
            {
                count1++; count2++;
                //Thread.Sleep(0); stuck when use Sleep!
            }
        }
    }
    void checkequal()
    {
        lock (this)
        {
            while (true)
            {
                if (count1 == count2)
                    Console.WriteLine("Synchronize");
                else
                    Console.WriteLine("unSynchronize");
               // Thread.Sleep(0);
            }
        }
    }
}
