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 중국어 웹사이트의 기타 관련 기사를 참조하세요!