Мне нужно написать многопоточный TCP-клиент на Java, но я не уверен, как его лучше структурировать. Я хотел бы, чтобы клиент работал в другом потоке, чтобы не блокировать основной поток.
В идеале я бы создал клиента в главном потоке, а затем поручил бы клиенту подключиться к серверу. Соединение, которое может занять некоторое время, будет происходить в другом потоке. После подключения клиент уведомляет основной поток и начинает прослушивать входящие сообщения с сервера. Основной поток уведомляется о получении сообщений.
В настоящий момент мой план состоит в том, чтобы клиентский класс TCP реализовал Runnable и выполнял как соединение, так и прием в методе run.
Буду признателен за любые мысли о том, как структурировать tcp-клиент.