> Java > java지도 시간 > Thread.interrupt()를 사용하여 Java에서 스레드를 정상적으로 중지하는 방법은 무엇입니까?

Thread.interrupt()를 사용하여 Java에서 스레드를 정상적으로 중지하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-30 13:53:10
원래의
140명이 탐색했습니다.

How to Gracefully Stop Threads in Java Using `Thread.interrupt()`?

Java에서 스레드를 효과적으로 중지하는 방법

소개

Java에서 스레드를 종료하는 것은 정상적인 프로그램 실행 및 리소스에 매우 중요합니다. 관리. 과거에는 더 이상 사용되지 않는 .stop() 메서드가 일반적으로 사용되었지만 보다 안정적인 접근 방식으로 대체되었습니다. 이 문서에서는 Thread.interrupt()를 사용하여 스레드를 올바르게 중지하는 방법을 살펴봅니다.

Thread.interrupt()를 사용하여 스레드 중지

스레드를 중지하는 데 선호되는 방법 Java는 Thread.interrupt()를 사용합니다. 이 메소드는 휴면 중인 스레드를 "깨우거나" Thread.sleep() 또는 I/O 작업과 같은 인터럽트 가능한 차단 호출을 중단합니다.

Interrupt() 메소드 구현

  1. 중단 확인: 스레드의 run() 메서드 내에서 주기적으로 확인합니다. Thread.currentThread().isInterrupted()가 true를 반환하는 경우.
  2. 중단 처리: True인 경우 스레드 실행을 정상적으로 중지하고 반환하기 전에 필요한 정리 작업을 수행합니다.
  3. 예시 코드:
public class IndexProcessor implements Runnable {
    ...

    @Override
    public void run() {
        boolean run = true;
        while (run) {
            try {
                ...
            } catch (InterruptedException e) {
                // Handle interruption
                run = false;
            }
        }
    }
}
로그인 후 복사

외부에서 스레드 종료

run() 메서드 외부에서 스레드를 중지하려면 다음을 사용합니다. 단계:

  1. 참조를 얻으십시오. 스레드: 스레드가 생성될 때 스레드에 대한 참조를 저장합니다.
  2. 스레드 중단: 나중에 스레드를 중지하려면 해당 Interrupt() 메서드를 호출합니다.
  3. 예시 코드:
public class SearchEngineContextListener implements ServletContextListener {
    ...

    private Thread thread;

    ...

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        ...
        if (thread != null) {
            thread.interrupt();
        }
    }
}
로그인 후 복사

Thread.interrupt() 사용의 이점

  • 즉시 알림: 깨어남 잠자는 스레드와 인터럽트 차단 작업.
  • 우아한 정리: 스레드가 종료 전에 필요한 정리를 수행하도록 허용합니다.
  • 예외 방지: .stop()과 달리 인터럽트 ()는 예외를 발생시키지 않습니다. default.

결론

Thread.interrupt()를 사용하면 Java에서 스레드를 중지하는 강력하고 효율적인 방법을 제공하여 원활한 프로그램 실행과 리소스 관리를 보장합니다. 스레드 내에서 이 방법을 구현하고 이에 따라 중단을 처리하면 스레드 종료를 제어하고 불필요한 예외를 방지할 수 있습니다.

위 내용은 Thread.interrupt()를 사용하여 Java에서 스레드를 정상적으로 중지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿