public Double simula() {

        /* Simula fino al numero di job richiesti. */
        while (this.getTempiUscita().size() < this.getJobTotali()) {
            Event next = this.getCalendar().get_next_double_cpu();
            this.setClock(this.getCalendar().get_next_time_double_cpu(next));
            System.out.println(clock + " " + next);
            switch (next) {
                case ARRIVAL: arrival(); break;
                case CPU1: cpu1(); break;
                case CPU2: cpu2(); break;
                case IO: io();break;
            }
        }

        /* Calcola la media dei tempi di uscita dei jobs. */
        double avg = 0;
        for (Double d : this.getTempiUscita())
            avg += d;

        /* Restituisci la media. */
        return avg / this.getTempiUscita().size();

    }