Mixed multiple bullet firing- it was because the thread could not exit the player.isFiring() while loop if the user was holding space, so the other while loops could not be polled- the thread never exited. Now, when the game ends, the loops are stopped in the order of checking (inside --> out). The player firing boolean is also forcibly set to false, and controls deactivated so that it does not re-activate until the new game is started, and the thread has time to finish all loops and exit normally.