public void run(){
	try {
	    // Starting all threads at the same time (clock == 0 / "8:00AM").
	    startSignal.await();
	} catch (InterruptedException e) {
	    e.printStackTrace();
	}
	//Initializing the current time and the Random object
	startTime = System.currentTimeMillis();
	Random r = new Random();
	//System.out.println("CLOCK STARTED");
	int numOfQuestions = 0;
	while(this.getTime() <= 5400){ //Simulation starts at 800 (time 0000) and ends at 1700 (time 5400).
	    synchronized(timeRegistry){
		Iterator<Long> iter = timeRegistry.iterator();
		while(iter.hasNext()){
		    Long t = iter.next();
		    if(this.getTime() >= t && office != null){
			iter.remove();
			office.notifyWorking();
		    }
		}
	    }
	    int random = r.nextInt(5000000);
	    if(random == 0 && office != null){	// Firing random questions.
		numOfQuestions++;
		office.notifyWorking();
	    }	
	}
	//System.out.println(numOfQuestions);
	//System.out.println("CLOCK ENDED");
	office.notifyWorking();
	synchronized(office.getManager().getQuestionLock()){
	    office.getManager().getQuestionLock().notifyAll();
	}
    }