Jak zatrzymać/zabić długo działający wątek Java w czasie wykonywania? przekroczenie limitu czasu -> anulowane -> stany przerwane

Opublikowany: 2021-07-17

Jak zabić wątek Java, który trwa dłużej niż oczekiwano? przekroczenie limitu czasu -> anulowane -> stan przerwany

Czy zastanawiałeś się kiedyś, jak zabić długo działający wątek Java? Czy masz któreś z poniższych pytań?

  • Zabij/Zatrzymaj wątek po określonym czasie
  • Zabijanie wątku po określonym czasie w Javie
  • Jak zabić wątek Java
  • Jak zatrzymać wątek w Javie na przykładzie?
  • jak zatrzymać wątek w przykładzie kodu java
  • jak zatrzymać wątek w java bez użycia metody stop

Jeśli masz jakiekolwiek z poniższych pytań, to jesteś we właściwym miejscu. Dzisiaj przyjrzymy się prostemu przykładowi, który demonstruje w Javie8 sposoby na zabicie długo działającego wątku.

Co to jest logika:

  1. Utwórz klasę CrunchifyJavaTaskTimeout.java
  2. Utwórz executor Java Thread z tylko 1 rozmiarem puli wątków.
  3. Utwórz 4 przyszłe zadania obiektu CrunchifyRunner z limitem czasu wynoszącym 3 sekundy
  4. CrunchifyRunner.java to prosta klasa, która implementuje metodę call()
    • Wprowadza 20 seconds opóźnienie, jeśli futureTask = 4
  5. Gdy przyszłość osiągnie czas 3 seconds , tworzy limit czasu Wyjątek, jeśli wątek nadal działa
    • Po przekroczeniu limitu czasu musimy anulować zadanie za pomocą crunchifyFuture. cancel( true ) ;
    • Anulowanie futureTask spowoduje wyzwolenie InterruptedException (zgłoszony, gdy wątek czeka, śpi lub w inny sposób jest zajęty, a wątek zostanie przerwany, przed lub w trakcie aktywności. Czasami metoda może chcieć przetestować, czy bieżący wątek został przerwany, a jeśli tak, natychmiast zgłosić ten wyjątek).

Zacznijmy:

Krok 1 Utwórz klasę CrunchifyRunner.java

Krok 2 Utwórz klasę CrunchifyJavaTaskTimeout.java

Krok 3

Kliknij prawym przyciskiem myszy CrunchifyJavaTaskTimeout.java i uruchom go jako aplikację Java.

Poniżej zobaczysz wynik w konsoli Eclipse.

Jak zabić zatrzymujący wątek java w czasie wykonywania?

Daj mi znać, jeśli masz jakieś pytania na ten temat.