Added more locking to guarantee thread safety. As a general rule, getters for student use throw the potential interruptedException, whereas methods for internal use either silently supress the exception or repeat the attempted setting until the exception doesn't occur, with slight sleep in between repetitions.