Зачем в правильном решении стоит проверка на то установлен ли флаг isWinnerFound == false? Ведь в случае победы у других потоков не исполняется команда по выводу победителя, так как поток ловит исключение на прерывание.