Не могу разобраться и ответа от валидатора дождаться.
public class Client {
    protected Connection connection;
    private volatile boolean clientConnected = false;

    protected String getServerAddress() {
        ConsoleHelper.writeMessage("Введите адрес Вашего сервера.");
        return ConsoleHelper.readString();
    }
    protected int getServerPort() {
        ConsoleHelper.writeMessage("Введите порт Вашего сервера.");
        return ConsoleHelper.readInt();
    }
    protected String getUserName() {
        ConsoleHelper.writeMessage("Введите Ваше имя.");
        return ConsoleHelper.readString();
    }
    protected boolean shouldSendTextFromConsole() {
        return true;
    }
    protected SocketThread getSocketThread() {
        return new SocketThread();
    }
    protected void sendTextMessage(String text) {
        try {
            connection.send(new Message(MessageType.TEXT, text));
        }
        catch(IOException e) {
            ConsoleHelper.writeMessage("Произошла ошибка при отправке сообщения.");
            clientConnected = false;
        }
    }
    public void run() {
        Thread socketThread = getSocketThread();
        socketThread.setDaemon(true);
        socketThread.start();
            try {
                synchronized(this) { wait();}
            }
            catch(InterruptedException e) {
                ConsoleHelper.writeMessage("Произошла непоправимая ошибка.");
                System.exit(1);
            }

        if(clientConnected) {
            ConsoleHelper.writeMessage("Соединение установлено. Для выхода наберите команду 'exit'.");
            while(clientConnected) {
                String text = ConsoleHelper.readString();
                if(text.equals("exit")) break;
                if(shouldSendTextFromConsole()) sendTextMessage(text);
            }
        }
        else {
            ConsoleHelper.writeMessage("Произошла ошибка во время работы клиента.");
        }
            }

    public static void main(String[] args) throws IOException {
        Client client = new Client();
        client.run();
    }


    public class SocketThread extends Thread {

    }
}