/**
 * Worker.java
 *
 * This is a thread that is used to demonstrate solutions
 * to the critical section problem.
 *
 * @author Greg Gagne, Peter Galvin, Avi Silberschatz
 * @version 1.0 - July 15, 1999
 * Copyright 2000 by Greg Gagne, Peter Galvin, Avi Silberschatz
 * Applied Operating Systems Concepts - John Wiley and Sons, Inc.
 */


public class Worker extends Thread
{
   public Worker(String n, int i, MutualExclusion s) {
      name = n;
      id = i;
      shared = s;
   }
   
   public void run() {
      while (true) {
         shared.enteringCriticalSection(id);       
    
         MutualExclusion.criticalSection();
	 System.out.println("Worker " + name + " in critical section");
     
         shared.leavingCriticalSection(id);
	 System.out.println("Worker " + name + " out of critical section");
         
         MutualExclusion.nonCriticalSection();
      }
   }
  
   private String name; 
   private int id; 
   private MutualExclusion shared;
}

