suchen
HeimJavajavaLernprogrammWie lege ich mit ExecutorService ein Timeout für einen Thread in Java fest?

How to Set a Timeout for a Thread in Java Using ExecutorService?

So legen Sie eine Zeitüberschreitung für einen Thread fest

Wie in der ersten Anfrage angesprochen, bestehen Bedenken hinsichtlich der Einschränkung der Ausführung eines Threads Zeit. Das Ziel besteht darin, Situationen zu bewältigen, in denen ein Thread möglicherweise in eine Endlosschleife eintritt, was dazu führt, dass der übergeordnete Thread auf unbestimmte Zeit wartet.

Eine besprochene Lösung umfasst die Verwendung einer TimerTask innerhalb der run()-Methode des Threads. Ein effizienterer Ansatz besteht jedoch darin, die ExecutorService-Klasse zu nutzen. Dies bietet einen praktischen Mechanismus zum Festlegen eines Timeouts für einen Thread.

Eine Beispielimplementierung mit ExecutorService kann wie folgt veranschaulicht werden:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class TimeoutTest {
    public static void main(String[] args) throws Exception {
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Future<string> future = executor.submit(new Task());

        try {
            System.out.println("Started..");
            System.out.println(future.get(3, TimeUnit.SECONDS));
            System.out.println("Finished!");
        } catch (TimeoutException e) {
            future.cancel(true);
            System.out.println("Terminated!");
        }

        executor.shutdownNow();
    }
}

class Task implements Callable<string> {
    @Override
    public String call() throws Exception {
        Thread.sleep(4000); // Simulate a long-running task that takes 4 seconds
        return "Ready!";
    }
}</string></string>

In diesem Beispiel kapselt die Task-Klasse die Long- laufende Aufgabe. Die Methode ExecutorService.submit() wird verwendet, um diese Aufgabe zur Ausführung zu übermitteln. Das von subscribe() zurückgegebene Future-Objekt bietet einen Mechanismus zum Abrufen des Ergebnisses der Aufgabe.

Die Future.get()-Methode wird mit einem Timeout-Argument von 3 Sekunden aufgerufen. Wenn die Aufgabe innerhalb dieses Zeitrahmens abgeschlossen ist, wird das Ergebnis zurückgegeben. Wenn die Aufgabe jedoch länger als 3 Sekunden dauert, wird eine TimeoutException geworfen. Im Catch-Block wird die Aufgabe abgebrochen und die Meldung „Terminated!“ angezeigt. Die Nachricht wird gedruckt.

Außerdem ist es wichtig zu beachten, dass in der Aufgabe mit langer Laufzeit eine Prüfung eingebaut werden sollte, um Unterbrechungen zu behandeln, um zu verhindern, dass die Aufgabe auf unbestimmte Zeit ausgeführt wird. Diese Prüfung kann mit Thread.interrupted() implementiert werden.

Das obige ist der detaillierte Inhalt vonWie lege ich mit ExecutorService ein Timeout für einen Thread in Java fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.