Я пишу клиентское приложение Java (базовый пакет Java Net с TCP/IP). Клиент должен принимать входные данные из system.in и в то же время должен слушать любые сообщения, поступающие с сервера через вход сокетов. После того, как будет получен вход из системы system.in, клиент получит этот ввод, выполнит некоторую обработку и отправит его на сервер в качестве запроса. Поэтому в основном 2 процессы выполняются,Многопоточный Java-клиент TCP
-Прослушивание по запросу клиента
-listning для ответов сервера.
Я реализовал 2 потока для этого и управлял обработкой сообщений в основной теме. Это достаточно хороший дизайн.?
И есть способ вернуть сообщение, полученное от system.in в основной поток. Метод thread run() возвращает void. Я использовал переменную volatile, чтобы вернуть полученную строку, но ее сказали, что volatile очень дорогостоящий, поскольку он не использует кеш процессора для хранения переменной.
Почему? Вам нужно только получить ответ после отправки запроса. Для этого вам не нужны два потока. – EJP
Его необходимо, чтобы сервер отправлял некоторые определения при подключении, поэтому клиент должен его слушать, и он также должен прослушивать запросы от system.in в одно и то же время. – ndnine89