Class TimeoutManager
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final long
Standard-Timeout im Archivsystem -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> T
callWithTimeout
(TimeoutFunction<T> func) Führt den angegebenen Lambda-Ausdruck mit einem Timeout aus.static <T> T
callWithTimeout
(TimeoutFunction<T> func, long timeoutMillis) Führt den angegebenen Lambda-Ausdruck mit einem Timeout aus.
-
Field Details
-
STANDARD_TIMEOUT
public static final long STANDARD_TIMEOUTStandard-Timeout im Archivsystem- See Also:
-
-
Constructor Details
-
TimeoutManager
public TimeoutManager()
-
-
Method Details
-
callWithTimeout
public static <T> T callWithTimeout(TimeoutFunction<T> func) throws TimeoutException, InterruptedException Führt den angegebenen Lambda-Ausdruck mit einem Timeout aus. Der Timeout istSTANDARD_TIMEOUT
.Wenn der Timeout abläuft und die Funktion sich nicht nicht beendet hat, wird der Thread, der die Funktion ausführt (dies ist der gleiche Thread, auf dem diese Funktion aufgerufen wird), mit
Thread.interrupt()
unterbrochen. Das heißt, mit demTimeoutManager
können nur Funktionen mit einem Timeout versehen werden, die sauber auf Interrupts reagieren und nicht z. B. in Endlosschleifen festhängen.- Type Parameters:
T
- Ergebnis-Typ- Parameters:
func
- Funktion, die ausgeführt wird. Der Funktion wird als Parameter einTimeoutCallback
übergeben, über den mitTimeoutCallback.tick()
der Timeout verlängert werden kann.- Returns:
- Ergebnis der übergebenen Funktion
- Throws:
TimeoutException
- Wenn der Timeout abgelaufen ist.InterruptedException
- Wenn dieser Thread unterbrochen wurde, bevor der Timeout abgelaufen ist
-
callWithTimeout
public static <T> T callWithTimeout(TimeoutFunction<T> func, long timeoutMillis) throws TimeoutException, InterruptedException Führt den angegebenen Lambda-Ausdruck mit einem Timeout aus.Wenn der Timeout abläuft und die Funktion sich nicht nicht beendet hat, wird der Thread, der die Funktion ausführt (dies ist der gleiche Thread, auf dem diese Funktion aufgerufen wird), mit
Thread.interrupt()
unterbrochen. Das heißt, mit demTimeoutManager
können nur Funktionen mit einem Timeout versehen werden, die sauber auf Interrupts reagieren und nicht z. B. in Endlosschleifen festhängen.- Type Parameters:
T
- Ergebnis-Typ- Parameters:
func
- Funktion, die ausgeführt wird. Der Funktion wird als Parameter einTimeoutCallback
übergeben, über den mitTimeoutCallback.tick()
der Timeout verlängert werden kann.timeoutMillis
- Timeout in Millisekunden- Returns:
- Ergebnis der übergebenen Funktion
- Throws:
TimeoutException
- Wenn der Timeout abgelaufen ist.InterruptedException
- Wenn dieser Thread unterbrochen wurde, bevor der Timeout abgelaufen ist
-