@Override
		public void run() {

			int currentDistance = 0;

			while (true) {

				// atomic block start
				synchronized(LOCK) {

					if (!anyoneFinished) {

						// increase distance
						currentDistance++;
						System.out.println("Runner " + runnerId + " is now at distance " + currentDistance);

						// if destination reached
						if (currentDistance == FINAL_DISTANCE) {
							
							// set the flag
							anyoneFinished = true;
							System.out.println("RUNNER " + runnerId + " FINISHED!");
							
							// stop
							break;
						}
					}
				} // atomic block end
				
				// if someone finished in the meantime, stop
				if (anyoneFinished)
					break;

				// wait a little to give other threads a chance to run
				try {

					Thread.sleep(50);
				} 
				catch (InterruptedException e) {

					e.printStackTrace();
				}
			}
		}