@Override
    public void run() {
        try {
            connection.open();
            String message;

            while ((message = connection.read()) != null) {
                messageHandler.addToMessagePool(Message.generateMessage(this, message));
            }

        } catch (IOException | InterruptedException ex) {
            Logger.getLogger(ClientHandler.class.getName()).log(Level.INFO, ex.toString());
        } finally {
            secureExit();
        }
    }