public synchronized void timerInterrupt() {
    Iterator<Process> it;
    while(true) {
      try {
        wait();
      } catch(InterruptedException ie) {
        // Missing exception
      }
      
      bitacora.timeQ.setText(Integer.toString(tickCounter));
      // Review all processes to be added to the ready queue when they arrive
      for(int i = this.nextProcess; i < process.length; i++) {
        if(process[i].getTimeIn() == tickCounter) {
          addProcess(process[i]);
          bitacora.colaPE.setText(processIn_toString(i));
          this.nextProcess = i+1;
        }
      }
      bitacora.colaPL.setText(readyQueue_toString());
      //Check if the execution of all processes has ended
      if(this.readyQueue.isEmpty() 
         && this.hardDrive.getQ().isEmpty() 
         && (this.finishedQueue.size() == process.length)) {
        //Interrupt the execution of all threads
        this.ticker.interrupt();
        this.hardDrive.interrupt();
        this.cpu0.interrupt();
        this.cpu1.interrupt();

        //Calculate stadistics
        Stadistics st = new Stadistics(finishedQueue, hardDrive.getIdleTime(), cpu0.getIdleTime(),
        cpu1.getIdleTime());
        this.bitacora.setVisible(false);

        final OutPanel outPanel = new OutPanel();

        java.awt.EventQueue.invokeLater(new Runnable() {
          @Override
          public void run() {
            outPanel.setVisible(true);
          }
        });
        st.writeProcessLog();
        st.generateAverageProcessTime();
        outPanel.jLabel4.setText(Integer.toString(st.getIdleCPU0Time()));
        outPanel.jLabel5.setText(Integer.toString(st.getIdleCPU1Time()));
        outPanel.jLabel6.setText(Integer.toString(st.getIdleDiskTime()));
        outPanel.jLabel8.setText(Integer.toString(st.getAverageWProcessTime()));

        //Show the outPanel for stadistics

        return;
      }
      //Iterate over each process on the queue to add a tick on waiting state
      it = this.readyQueue.iterator();
      while(it.hasNext()) {
        it.next().addWaitCPU(1);
      }
      
      tickCounter++;
    }
  }