Advertisement
heavenriver

Runner.java (judge version)

Apr 15th, 2013
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.10 KB | None | 0 0
  1. package runners_judge;
  2.  
  3. public class Runner implements Runnable
  4.  
  5.     {
  6.     private int runnerID;
  7.     private Start start;
  8.     private int metresRun;
  9.     public static final int METRES_TO_RUN = 100;
  10.    
  11.     public Runner(int id, Start s)
  12.         {
  13.         runnerID = id;
  14.         start = s;
  15.         metresRun = 0;
  16.         }
  17.    
  18.     public int getRunnerID()
  19.         {
  20.         return runnerID;
  21.         }
  22.    
  23.     public String toString()
  24.         {
  25.         return "Runner " + runnerID;
  26.         }
  27.    
  28.     public synchronized boolean hasArrived()
  29.         {
  30.         return METRES_TO_RUN == metresRun;
  31.         }
  32.    
  33.     public void run()
  34.         {
  35.         boolean ready = start.isReady();
  36.         start.setReady(this);
  37.         try
  38.             {
  39.             while(metresRun < METRES_TO_RUN)
  40.                 {
  41.                 if(start.isReady() && start.isReady() != ready)
  42.                     Thread.sleep((long)(Math.random() * 10));
  43.                 if(start.isReady())
  44.                     {
  45.                     metresRun++;
  46.                     System.out.println(toString() + " has run " + metresRun + " metres");
  47.                     if(metresRun < METRES_TO_RUN)
  48.                         Thread.sleep((long)(Math.random() * 10));
  49.                     }
  50.                 }
  51.             System.out.println(toString() + " has arrived!");
  52.             Judge.addRunner(this);
  53.             }
  54.         catch(InterruptedException e)
  55.             { }
  56.         }
  57.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement