Konsole letzte Zeile für Eingabe

Rambomaster

Mitglied
Hallo Zusammen,

ich arbeite gerade an einer Konsolen Applikation die per Eingabe in der Konsole diverse Befehle annehmen soll.
In dieser Applikation laufen mehrere Threads gleichzeitig und diese printen gelegentlich Informationen auf der Konsole aus.
Wenn ich also jetzt einen Befehl in der Konsole eingebe und in dem Moment printet ein Thread etwas in die Konsole, wird meine Eingabe zerrissen.

Ich habe eine Testapplikation gemacht mit einem Thread der jede Sekunde "Tick!" ausgibt.
So sieht dann die Ausgabe auf der Konsole aus, wenn ich versuche den Befehl "shutdown" auszuführen.
Code:
Tick!
Tick!
Tick!
Tick!
Tick!
Tick!
shutdTick!
own
Shutdown!

Gibt es irgendeine Möglichkeit, immer die letzte Zeile der Konsole als Eingabe zu benutzen?
Ich habe schon diverse Applikationen gesehen, wo das so gemacht wurde, aber ich habe bis jetzt kein Beispiel für Java gefunden im Internet.

Gruss
Rambomaster
 
Hallo!

Java selbst bietet dafür keine Möglichkeit.

Bei gleichzeitigem Schreiben und Lesen wird die Eingabe - wie du bereits gesagt hast: "zerissen".
Auch wenn die Eingabe über mehrere Zeilen verteilt wird, funktioniert das ganze dennoch.

Du könntest dir auch die Klasse "Console" anschauen, die bietet Methoden um Zeilen einzulesen und auszugeben - jedoch nicht gleichzeitig!

Ich habe für das selbe Problem einen anderen Lösungsansatz.
Ich benutze eine Library namens JCurses mit seinem AWT ähnlichem Fenster-Toolkit.

JCurses *klick*

Diese Bibliothek ist jedoch von nativem Code abhängig, der nur für Windows (.dll) und Linux (.so) verfügbar ist.

Hier mal ein Screenshot aus einer App von mir, die JCurses nutzt:
http://img704.imageshack.us/img704/5831/jcursestest.jpg


Also, entweder damit leben, dass die von dir erwähnten Probleme auftreten, oder 3rd Party Libraries nutzen.

mfg
Filip
 
Vielen Dank für deine Antwort.

Ich habe es schon fast vermuted, dass das mit Java nicht einfach so möglich ist.
Aber wie du ja auch gesagt hast, kann man ja trotzdem den Befehl ausführen, auch wenn es den "zerreisst". Wenn nicht mehr die ganzen Debug-Ausgaben auf der Konsole ausgegeben werden, kommt es auch nicht mehr so oft vor, dass ein Befehl "zerissen" wird.

JCurses werde ich mal anschauen, das sieht ja nicht schlecht aus. Da die Applikation hauptsächlich auf einem Linux Server laufen soll, währe also die Abhängigkeit zu nativem Code nicht so tragisch.

Gruss
Rambomaster
 
Zurück