Wie kann man lange laufende Java-Threads zur Laufzeit stoppen/beenden? timed-out -> abgebrochen -> unterbrochene Zustände

Veröffentlicht: 2021-07-17

Wie kann man Java-Threads beenden, die länger als erwartet dauern? timedout -> abgebrochen -> unterbrochener Zustand

Haben Sie sich jemals gefragt, wie Sie lange laufende Java-Threads beenden können? Haben Sie eine der folgenden Fragen?

  • Einen Thread nach einer bestimmten Zeit beenden/stoppen
  • Beenden von Threads nach einem bestimmten Zeitlimit in Java
  • So beenden Sie einen Java-Thread
  • So stoppen Sie einen Thread in Java mit einem Beispiel
  • So stoppen Sie Threads in einem Java-Codebeispiel
  • Wie man einen Thread in Java stoppt, ohne die Stop-Methode zu verwenden

Wenn Sie eine der folgenden Fragen haben, sind Sie hier richtig. Heute werden wir ein einfaches Beispiel durchgehen, das Java8-Methoden zum Beenden lang laufender Threads demonstriert.

Was ist eine Logik:

  1. Erstellen Sie die Klasse CrunchifyJavaTaskTimeout.java
  2. Erstellen Sie einen Java-Thread-Executor mit nur einer Threadpool-Größe.
  3. Erstellen Sie 4 zukünftige Aufgaben eines CrunchifyRunner Objekts mit einem Timeout von 3 Sekunden
  4. CrunchifyRunner.java ist eine einfache Klasse, die die Methode call() implementiert
    • Es führt eine Verzögerung von 20 seconds ein, wenn futureTask = 4
  5. Sobald future die 3 seconds -Zeit erreicht, wird eine Timeout-Ausnahme erstellt, wenn der Thread noch ausgeführt wird
    • Sobald die Zeit abgelaufen ist, müssen wir die Aufgabe mit crunchifyFuture abbrechen. cancel( true ) ;
    • Sobald futureTask abgebrochen wird, wird InterruptedException ausgelöst (wird ausgelöst, wenn ein Thread wartet, schläft oder anderweitig belegt ist und der Thread entweder vor oder während der Aktivität unterbrochen wird. Gelegentlich möchte eine Methode möglicherweise testen, ob der aktuelle Thread unterbrochen wurde, und wenn ja, um diese Ausnahme sofort auszulösen.)

Lass uns anfangen:

Schritt-1 Erstellen Sie die CrunchifyRunner.java-Klasse

Schritt-2 Erstellen Sie die Klasse CrunchifyJavaTaskTimeout.java

Schritt 3

Klicken Sie mit der rechten Maustaste auf CrunchifyJavaTaskTimeout.java und führen Sie es als Java-Anwendung aus.

Sie sehen unten das Ergebnis in der Eclipse-Konsole.

So beenden Sie den Java-Thread zur Laufzeit

Lassen Sie mich wissen, wenn Sie Fragen zu diesem Thema haben.