Java - System.currentTimeMillis ?

Hallo,

wenn ich auf den Start-Button klicke, möchte ich, dass die verstrichene Zeit angezeigt wird, bis auf den Stop-Button geklickt wird.

also hab ich eine Boolean-variable timeFlag auf false gesetzt. wenn auf Stop geklickt wird, ist timeFlag=true.
aber ich lande in einer Endlosschleife, wenn ich das so mache:

while (timeFlag==false) {
 System.out.println("Time: " + System.currentTimeMillis());
}

ich kann dann nicht mehr den Stop-Button drücken.
Hat jemand eine Idee?

Vielen Dank
Steffi

Ich gehe mal davon aus dass du über eine Swing-Anwendung redest.

Bei dem was du machst, versetzt du den Thread der die Usereingaben behandelt (Event Dispatcher Thread) in eine Endlosschleife. Mal davon abgesehen dass du die CPU zu 100% auslastest wird das Programm auch überhaupt nicht mehr reagieren können, weil der Event Dispatcher Thread deine neuen Eingaben nicht verarbeiten kann.

Was hast du vor? Wenn du einfach nur die Zeit zwischen start und ende brauchst, würde ich den start in einer variablen speichern und dann am ende die differenz zur aktuellen Zeit ermitteln. Wenn du zur Laufzeit die Zeit aktualisieren musst, empfiehlt es sich einen neuen eigenen Thread anzustarten, der dir die Anzeige aktualisiert. Aber bitte nicht so brachial in einer while-Schleife die sonst nichts andres macht :wink: im Zweifelsfall noch ein paar sleep()'s einbauen, sonst verheizt du die ganze CPU Zeit für die Berechungen und siehst auf der Anzeige wahrscheinlich nichtmal was, weil die GUI nur updatet wenn sie Rechenzeit zur Verfügung hat.

Grüße
Bruno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]