gleichzeitig auf Tastatureingabe und InputStream an Socket warten

Maksmus

Grünschnabel
Hallo,

ich habe folgendes Problem.
In meinem Java Programm sind zwei BufferedReader enthalten.
Einer wartet auf die Tastatureingabe, der andere auf eine Nachricht vom Server auf einem bestimmten Port.

Ich kann auch entweder einen Text eingeben, oder auf eine Nachricht warten.
Ich kann aber nicht beides gleichzeitig realisiern.

Weil sobald ich ja die Methode readline() auf dem Tastatureingaber.BufferedReader objekt ausführe.
Muss ich warten bis was passiert ich was eingebe.

oder sobald ich die Methode readline() auf dem Socket.BufferedReader objekt ausführe.
Muss ich warten bis ich eine Nachricht über den Port empfange.


Wie kann ich aber realsieren, dass sobald eine Nachricht eintrifft diese angezeigt wird.
Ich aber auch immer die Möglichkeit habe Text über die Tastatur einzugeben.

Das alles soll nur in der Konsole geschehen.

Vielen Dank im Voraus?


grüße
maksmus
 
Hallo,

die readLine()-Methode blockiert den Thread der sie ausführt so lange
bis ein linefeed- und/oder carriagereturn-Zeichen im Datenstrom auftaucht.

Ich nehme an das in Deinem Fall der main()-Thread dort angehalten wird.

Die Lösung : mindestens ein weiteren Thread erzeugen und diesen dann
eine der beiden readLines ausführen lassen.

Ganz hübsch ist es für solch wiederkehrende Ereignisse wie Streams bearbeiten
auf Tastaturabfragen reagieren etc. generell je einen neuen Thread zu erzeugen
und den main()-Thread nur für auf-/abbau der Anwendung zu nutzen.

Gruß JAdix
 
Zurück