Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package runners_judge;
- public class Runner implements Runnable
- {
- private int runnerID;
- private Start start;
- private int metresRun;
- public static final int METRES_TO_RUN = 100;
- public Runner(int id, Start s)
- {
- runnerID = id;
- start = s;
- metresRun = 0;
- }
- public int getRunnerID()
- {
- return runnerID;
- }
- public String toString()
- {
- return "Runner " + runnerID;
- }
- public synchronized boolean hasArrived()
- {
- return METRES_TO_RUN == metresRun;
- }
- public void run()
- {
- boolean ready = start.isReady();
- start.setReady(this);
- try
- {
- while(metresRun < METRES_TO_RUN)
- {
- if(start.isReady() && start.isReady() != ready)
- Thread.sleep((long)(Math.random() * 10));
- if(start.isReady())
- {
- metresRun++;
- System.out.println(toString() + " has run " + metresRun + " metres");
- if(metresRun < METRES_TO_RUN)
- Thread.sleep((long)(Math.random() * 10));
- }
- }
- System.out.println(toString() + " has arrived!");
- Judge.addRunner(this);
- }
- catch(InterruptedException e)
- { }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement