Mindestlaufzeit

JAVAnnik

Bekanntes Mitglied
Halli Hallo,

gibt es einen eleganten Weg eine Mindestlaufzeit für eine Berechnung zu erreichen?
Ich möchte, dass eine Methode, welche Berechnungen durchführt und sehr unterschiedliche Laufzeiten hat (unter Umständen auch etwas länger), mindestens eine Sekunde dauert.

Ich möchte also nicht die Methode in einem Thread aufrufen und danach noch Thread.sleep(1000)... Dann würde die Laufzeit ja teilweise unnötig verlängert werden...

Gibt es einen eleganteren Weg als z.B. die Zeit der Berechnung zu messen und Thread.sleep() mit der entsprechenden Dauer (1sec - Berechnungsdauer) aufzurufen?! Vllt. mit einem zweiten Thread der die Zeit misst etc???

Gruß JAVAnnik
 

kaoZ

Top Contributor
Wenn ich dich richtig verstehe möchtest du absichtlich die Berechnungsdauer hinauszögern ?

warum sollte da ein sleep nicht reichen wenn du möchtest das die Berechnung mindestens eine Sekunde dauert ?

Erstelle einfach eine Bedingung, wenn die Berechnung vor Ablauf einer von dir festgelegten Dauer fertig sein sollte, legst du den Thread schlafen , ansonsten eben nicht ?!

Kann auch sein das ich durch die leicht ungünstig formulierte Frage jetzt nicht ganz durchblicke :D

Zum Berechnen der Dauer kannst du jeweils bei Methodeneintritt einen Zeitstempel setzen, und am Methodenende, anhand der Differenz kannst du dann entscheiden ob du den Thread schlafen legst oder ob das Programm im Ablauf ungehindert weiter ausgeführt werden soll.
 
Zuletzt bearbeitet:

JAVAnnik

Bekanntes Mitglied
Tschuldigung für die Formulierung. Ich wollte einfach dass Berechnungen mit der Dauer >= 1sec nicht künstlich verlängert werden und alle Berechnungen mit der Dauer < 1sec künstlich auf eine Sekunde hinausgezögert werden also dass Berechnungsdauer + Verzögerung = 1sec.

Gibt es dabei einen eleganteren Weg als die Berechnungsdauer zu messen und falls x (= 1sec - Berechnungsdauer) positiv ist Thread.sleep(x) aufzurufen?
 

kaoZ

Top Contributor
Naja wie soll den der elegantere Weg aussehen ? du kannst ja schlecht vorher bestimmen wie lange etwas dauert wenn du nicht einen Timer oder Zeitstempel verwendest um eben Start und Endzeit zu ermitteln , die Methode implementiert ja keine Kristallkugel welche vorher schon weiß wie lange eine vorher noch unbekannte Berechnung dauern wird , grade wenn du Unterschiedliche Berechnungen mit unterschiedlichen Werten hast ;)

Theoretisch setzt du einfach 2 Variablen, wie schon erwähnt bei Methodeneintritt, und bei Methodenende, übergibst dann z.B diese Differenz an eine weitere Methode welche dann die Fallentscheidung trifft ob eben gewartet werden soll oder nicht.

Mir wäre jetzt nicht bekannt das es irgend eine Utility Klasse gibt die sowas realisiert, bzw. anders realisieren würde als sich eben die Systemzeit vor und nach der Berechnung zu loggen und eben mit der Differenz die Fallentscheidung auszuführen.
 
Zuletzt bearbeitet:

Oben