Thread C#

/*
C#: The Complete Reference 
by Herbert Schildt 
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Demonstrate thread priorities. 
 
using System; 
using System.Threading; 
 
class MyThread { 
  public int count; 
  public Thread thrd; 
 
  static bool stop = false; 
  static string currentName; 
 
  /* Construct a new thread. Notice that this  
     constructor does not actually start the 
     threads running. */ 
  public MyThread(string name) { 
    count = 0; 
    thrd = new Thread(new ThreadStart(this.run)); 
    thrd.Name = name; 
    currentName = name; 
  } 
 
  // Begin execution of new thread. 
  void run() { 
    Console.WriteLine(thrd.Name + " starting."); 
    do { 
      count++; 
 
      if(currentName != thrd.Name) { 
        currentName = thrd.Name; 
        Console.WriteLine("In " + currentName); 
      } 
 
    } while(stop == false && count < 1000000000); 
    stop = true; 
 
    Console.WriteLine(thrd.Name + " terminating."); 
  } 

 
public class PriorityDemo { 
  public static void Main() { 
    MyThread mt1 = new MyThread("High Priority"); 
    MyThread mt2 = new MyThread("Low Priority"); 
 
    // Set the priorities. 
    mt1.thrd.Priority = ThreadPriority.AboveNormal; 
    mt2.thrd.Priority = ThreadPriority.BelowNormal; 
 
    // Start the threads. 
    mt1.thrd.Start(); 
    mt2.thrd.Start(); 
 
    mt1.thrd.Join(); 
    mt2.thrd.Join(); 
 
    Console.WriteLine(); 
    Console.WriteLine(mt1.thrd.Name + " thread counted to " + 
                      mt1.count); 
    Console.WriteLine(mt2.thrd.Name + " thread counted to " + 
                      mt2.count); 
  } 
}