Lesen von System.in in mehreren ThreadsJava

Java-Forum
Guest
 Lesen von System.in in mehreren Threads

Post by Guest »

Ich habe das folgende Problem:
  • Methode1, die ständig aus System.in liest und über Socket sendet
  • Methode2, die nur aus System.in liest, wenn darin ein Fehler auftritt
Wenn ich ein Problem in Methode2 habe, Ich muss zweimal die EINGABETASTE drücken, denn selbst wenn der Socket geschlossen wird, wird readLine() angezeigt on method1 wurde bereits ausgeführt, also liest es zuerst die Zeile für Methode1 und übernimmt dann die Eingabe für Methode2
Was kann ich in diesem Fall tun?
Beobachtung: Ich weiß, dass ich im Beispiel den Reader als Klasseneigenschaft erstellen kann. Ich habe es nur so gemacht, um es leichter zu verstehen

Code: Select all

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) {
//Default activity
}
}).start();
}

public void method2() {
try {
//Another Loop Activity
} catch (Exception e) {
socket.close();
String line;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
line = bufferedReader.readLine();
//Error activity
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post