>Java >java지도 시간 >Java 스레드를 안전하고 우아하게 중지하는 방법은 무엇입니까?

Java 스레드를 안전하고 우아하게 중지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-01 22:28:09493검색

How to Safely and Gracefully Stop a Java Thread?

Java 스레드를 안전하고 우아하게 중지하는 방법

Java에서 멀티스레딩으로 작업할 때 스레드를 조기에 종료해야 하는 경우가 발생할 수 있습니다. 적절한 실행을 보장하고 시스템 불안정을 방지하려면 스레드를 "정상적으로" 중지하는 것이 중요합니다. 여기에는 실행을 종료하기 전에 스레드가 중요한 작업을 완료하도록 허용하는 것이 포함됩니다.

문제:

실행하는 데 과도한 시간이 걸리는 스레드를 생성했습니다. . 완료되지 않은 것처럼 보이더라도 스레드를 정상적으로 중지하려고 합니다.

해결책:

이를 달성하기 위해 선호되는 접근 방식은 대상 스레드의 부울 변수를 활용하는 것입니다. run() 메소드. 외부에서 이 플래그를 true로 설정하면 스레드가 정상적으로 종료된다는 신호를 보냅니다. 예는 다음과 같습니다.

class MyThread extends Thread {

    volatile boolean finished = false;

    public void stopMe() {
        finished = true;
    }

    @Override
    public void run() {
        while (!finished) {
            // Perform tasks
        }
    }
}

stop() 메서드를 피하세요.

과거에는 Thread.stop() 메서드가 존재했지만 그 사용이 강력합니다. 낙담. Java 문서에 따르면 이 방법은 실행 시 "잠긴 모든 모니터를 잠금 해제"하므로 데이터 불일치 및 임의적 동작이 발생할 수 있습니다.

따라서 위에 설명된 대로 부울 플래그를 활용하면 안전하고 제어된 스레드 종료 메커니즘.

위 내용은 Java 스레드를 안전하고 우아하게 중지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.