런타임에 장기 실행 Java 스레드를 중지/종료하는 방법은 무엇입니까? 시간 초과 -> 취소됨 -> 중단된 상태

게시 됨: 2021-07-17

완료하는 데 예상보다 오래 걸리는 Java 스레드를 종료하는 방법은 무엇입니까? 시간 초과 -> 취소됨 -> 중단된 상태

오래 실행되는 Java 스레드를 종료하는 방법을 궁금해 한 적이 있습니까? 아래 질문이 있습니까?

  • 일정 시간이 지나면 스레드를 종료/중지
  • Java에서 지정된 시간 제한 후 스레드 종료
  • 자바 스레드를 죽이는 방법
  • 예제를 사용하여 Java에서 스레드를 중지하는 방법
  • Java 코드 예제에서 스레드를 중지하는 방법
  • stop 메소드를 사용하지 않고 Java에서 스레드를 중지하는 방법

아래 질문 중 하나가 있으면 올바른 위치에 있습니다. 오늘 우리는 오래 실행되는 스레드를 종료하는 Java8 방법을 보여주는 간단한 예를 살펴보겠습니다.

논리란 무엇인가:

  1. CrunchifyJavaTaskTimeout.java 클래스 생성
  2. 스레드 풀 크기가 1개인 Java 스레드 실행기를 작성하십시오.
  3. 3초의 시간 초과로 CrunchifyRunner 개체의 4가지 향후 작업 생성
  4. CrunchifyRunner.java는 call() 메서드를 구현하는 간단한 클래스입니다.
    • futureTask = 4 경우 20 seconds 지연이 발생합니다.
  5. 미래가 3 seconds 에 도달하면 스레드가 여전히 실행 중인 경우 시간 초과 예외가 생성됩니다.
    • 시간이 초과되면 crunchifyFuture를 사용하여 작업을 취소해야 합니다. cancel( true ) ;
    • futureTask가 취소되면 InterruptedException 이 트리거됩니다(스레드가 대기 중이거나, 잠자거나, 다른 방식으로 점유되고 스레드가 활동 전이나 도중에 중단될 때 발생합니다. 때때로 메소드는 현재 스레드가 중단되었는지 테스트하기를 원할 수 있습니다. 그렇다면 이 예외를 즉시 throw합니다.)

시작하자:

1단계 CrunchifyRunner.java 클래스 생성

2단계 CrunchifyJavaTaskTimeout.java 클래스 생성

3단계

CrunchifyJavaTaskTimeout.java를 마우스 오른쪽 버튼으로 클릭하고 Java 애플리케이션으로 실행합니다.

Eclipse 콘솔에서 아래 결과를 볼 수 있습니다.

런타임에 Java 스레드를 중지하는 방법

이 주제에 대해 질문이 있으면 알려주십시오.