> Java > java지도 시간 > `stop()`을 사용하지 않고 Java에서 스레드를 안전하게 종료하려면 어떻게 해야 합니까?

`stop()`을 사용하지 않고 Java에서 스레드를 안전하게 종료하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-29 15:01:10
원래의
788명이 탐색했습니다.

How Can I Safely Kill a Thread in Java Without Using `stop()`?

stop()을 사용하지 않고 스레드 종료

멀티 스레드 프로그래밍에서는 스레드를 종료해야 할 수도 있습니다. stop() 메서드는 갑작스러운 해결책을 제공하지만 잠재적인 리소스 누수로 인해 사용이 권장되지 않습니다. 이 기사에서는 스레드 종료를 위한 대체 방법인 인터럽트를 살펴봅니다.

인터럽트 사용

인터럽트 방법은 스레드에 실행을 정상적으로 종료하라는 신호를 보냅니다. 호출되면 스레드는 중단된 상태를 확인하고 true인 경우 InterruptedException을 발생시킵니다. 이 예외는 스레드의 실행 메서드 내에서 포착 및 처리될 수 있으므로 리소스를 정리하고 정상적으로 종료할 수 있습니다.

다음은 인터럽트 사용 예입니다.

public class HelloWorld {

    public static void main(String[] args) throws Exception {
        Thread thread = new Thread(new Runnable() {

            public void run() {
                try {
                    while (!Thread.currentThread().isInterrupted()) {
                        Thread.sleep(5000);
                        System.out.println("Hello World!");
                    }
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });
        thread.start();
        System.out.println("press enter to quit");
        System.in.read();
        thread.interrupt();
    }
}
로그인 후 복사

고려 사항

  • 스레드를 중단하면 sleep() 및 wait()가 즉시 발생합니다. InterruptedException, 무기한 차단 방지.
  • 중지 중인 스레드는 중단된 상태를 확인하고 InterruptedException을 잡아서 실행 루프를 종료하는 방식으로 협력해야 합니다.
  • catch 블록의 현재 스레드에 인터럽트를 설정하는 것이 가장 좋습니다. 연습하지만 단순한 경우에는 불필요할 수 있습니다.

게시됨 코드

게시된 코드에는 여러 가지 문제가 있습니다.

  • 현재 스레드가 인스턴스 변수에서 참조되어 실행 스레드를 정확하게 반영하지 못할 수 있습니다.
  • 스레드 활성 확인은 항상 true를 반환하는 반면, 인터럽트는 인터럽트 플래그를 지우고 불필요하게 호출됩니다.

결론적으로, 인터럽트를 사용하면 스레드 종료에 대해 보다 제어된 접근 방식을 제공하여 리소스를 적절하게 정리할 수 있습니다. 다만, 정지중인 스레드의 협조가 필요합니다.

위 내용은 `stop()`을 사용하지 않고 Java에서 스레드를 안전하게 종료하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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