Timer mit Thread in Java?

1 Antwort

Was ist hier die Zielsetzung?

Erstens hat Java eingebaute Timer. Dein so mühsam gebauter Thread ist daher unnötig (und bitte nicht stop() verwenden, es ist weder nötig noch sinnvoll - eigentlich solltest du dafür Compilerwarnungen bekommen).

Zweitens kannst du eine Methode nicht einfach von außen "abbrechen". Was du allenfalls machen kannst ist mit Interruption arbeiten, sofern die blockierenden Methoden darauf reagieren. Das ist die komische Exception, die du in deinem Thread sinnloserweise mit e.printStackTrace() behandelst...

Wenn du einfach prüfen willst ob eine gewisse Zeitspanne abgelaufen ist, merkst du dir am Anfang der Methode die aktuelle Zeit und vergleichst in einer Bedingung, ob sie überschritten wurde. Etwa so:

final var endTime = System.currentTimeMillis() + 10_000; // 10 s
while(System.currentTimeMillis() < endTime) {
    // tu was, solange die Zeit nicht abgelaufen ist
}