Thread C# Tutorial

using System;
using System.Threading;
class Test
{
    static void Main()
    {
        Thread thread1 = new Thread(new ThreadStart(ThreadMethod));
        Thread thread2 = new Thread(new ThreadStart(ThreadMethod));
        thread1.Start();
        thread2.Start();
        thread1.Join();
        thread2.Join();
        GC.Collect();
        GC.WaitForPendingFinalizers();
        Console.WriteLine(CountClass.UnsafeInstanceCount);
        Console.WriteLine(CountClass.SafeInstanceCount);
    }
    static void ThreadMethod()
    {
        for(int i = 0; i < 10; i++)
        {
            new CountClass();
        }
    }
}
class CountClass
{
    static int unsafeInstanceCount = 0;
    static int   safeInstanceCount = 0;
    static public int UnsafeInstanceCount
    {
        get {return unsafeInstanceCount;}
    }
    static public int SafeInstanceCount
    {
        get {return safeInstanceCount;}
    }
    public CountClass()
    {
        unsafeInstanceCount++;
        Interlocked.Increment(ref safeInstanceCount);
    }
    ~CountClass()
    {
        unsafeInstanceCount--;
        Interlocked.Decrement(ref safeInstanceCount);
    }
}