Lesen von System.in in mehreren Threads

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Lesen von System.in in mehreren Threads

by Guest » 31 Dec 2024, 14:29

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
}
}
}

Top