Thread C# Tutorial

using System;
using System.Threading;
class PhilosopherExample {
    public static bool chopStick1Available = true;
    public static bool chopStick2Available = true;
    public static void Main() {
        Thread philosopher1 = new Thread(new ThreadStart(GetChopSticks1));
        Thread philosopher2 = new Thread(new ThreadStart(GetChopSticks2));
        philosopher1.Start();
        philosopher2.Start();
    }
    public static void GetChopSticks1() {
        while (!chopStick1Available) {
            Console.WriteLine("#1 waiting for 1st");
            Thread.Sleep(100);
        }
        Console.WriteLine("#1 got 1st");
        chopStick1Available = false;
        while (!chopStick2Available) {
            Console.WriteLine("#1 waiting for 2nd");
            Thread.Sleep(100); 
        }
        Console.WriteLine("#1 got 2nd");
        chopStick2Available = false;
        Console.WriteLine("#1 uses and releases chopsticks.");
        chopStick1Available = true;
        chopStick2Available = true;
    }
    public static void GetChopSticks2() {
        while (!chopStick2Available) {
            Console.WriteLine("#2 waiting for 1st");
            Thread.Sleep(100);
        }
        Console.WriteLine("#2 got 1st chopstick.");
        chopStick2Available = false;
        while (!chopStick1Available) {
            Console.WriteLine("#2 waiting for 2nd");
            Thread.Sleep(100);
        }
        Console.WriteLine("#2 got 2nd chopstick.");
        chopStick1Available = false;
        Console.WriteLine("#2 uses and releases chopsticks.");
        chopStick1Available = true;
        chopStick2Available = true;
    }
}