Чтение из System.in в несколько потоковJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Чтение из System.in в несколько потоков

Сообщение Anonymous »

У меня следующая проблема:
  • метод 1, который продолжает читать из System.in и отправлять его через Socket
  • Метод 2, который читает из System.in только тогда, когда в нем возникает ошибка.
Когда у меня возникает проблема в методе 2, Мне приходится дважды нажать ENTER, потому что даже при закрытии сокета readLine() для метода 1 уже выполнялся, поэтому сначала он читает строку для метода 1, а затем принимает входные данные для метода 2.
Изменить:
Метод 1 постоянно получает сообщения из сокета, а метод 2 отправляет все, что я печатаю на консоли, через Socket. Но когда получение сообщений не удается, я хочу просто спросить, хочет ли клиент подключиться к другому серверу, но метод 1 уже прочитал строку, поэтому первый раз, когда я печатаю, я перехожу к теперь бесполезному методу 1, тогда вторая строка идет правильно к методу2
Что я могу сделать в этом случае?
Наблюдение: я знаю, что в этом примере я могу сделать средство чтения свойством класса. Сделано так, чтобы было легче понять
public class App {

public void method1() {
new Thread(() -> {
String line;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (!socket.isClosed() && line = bufferedReader.readLine() != null) {
//Keeps reading from the System.in and sending to the Socket
}
}).start();
}

public void method2() {
try {
//Keeps receiving messages from the Socket
} catch (Exception e) {
socket.close();
String line;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
line = bufferedReader.readLine();
//Asks if the user want to connect to other server
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... le-threads
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»