public void run() {
    T current;

    while (!isInterrupted()) {
      /* select next thread */
      current = queue.getNext();

      if ((current != null) && (current.isAlive())) {
//		moved this to after the priority changes to get complete and relevant readings:
//        /* Print Log */
//        reportThreadState();
        //Max priority for the first thread in the list to increase likelihood of execution
        current.setPriority(Thread.MAX_PRIORITY);
        System.err.println("********* New High Priority: "
            + current.getName());
        /* wait until time slice is over */
        schedulerSleep();
        //Resetting the priority for the first thread in the list to min, as the scheduler doesn't work when it's not running
        current.setPriority(Thread.MIN_PRIORITY);

        /* Print Log */
        reportThreadState();
      }
    }
  }