А конкретно эти строки:
public void run() {
            try {
                for (int i = 0; i < OnlineGame.steps.size(); i++) {
                    System.out.println(this.getName() + ":" + OnlineGame.steps.get(i));
                    Thread.sleep(1000 / rating);
                }
                if(!OnlineGame.isWinnerFound) {
                    System.out.println(this.getName() + ":победитель!");
                    OnlineGame.isWinnerFound = true;
                }
            } catch (InterruptedException e) {
                System.out.println(this.getName() + ":проиграл");
            }

        }
1. Как тут определяется победитель? Тот, у кого sleep быстрее отработает и сразу после этого интерапнет остальных gamer'ов? 2. Как работает строка "if(!OnlineGame.isWinnerFound)"? (изначально isWinnerFound = false)