public void takeTurn(AtomicReference<Player> whoseTurn) throws InterruptedException {
        this.gameStillRunning = true;
        while (this.gameStillRunning) {
            for (int i = 0; i < this.playerList.size(); i++) {
                Player player = this.playerList.get(i);
                whoseTurn.set(player);
                
                System.out.println(whoseTurn.get().getName());
                
                Move move = player.makeAMove();
                
                if (move == null) {
                    // Client disconnected
                    this.gameStillRunning = false;
                    break;
                }
                
                if (this.board.makeMove(move) == false) {
                    System.out.println("Wrong move!");
                    // Give them another chance
                    i--;
                    continue;
                } else {
                    // Signal the "move-made" event
                    this.onMoveMade(move);
                    int result = this.checkMoveIsWin(move);
                    if (result == 1 || result == -1) {
                        // Tell everybody that the game ended
                        // But a game-end also starts a new game
                        this.onGameEnd(result, player);
                        break;
                    }
                }
            }
        }
    }