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(); } }
고려 사항
게시됨 코드
게시된 코드에는 여러 가지 문제가 있습니다.
결론적으로, 인터럽트를 사용하면 스레드 종료에 대해 보다 제어된 접근 방식을 제공하여 리소스를 적절하게 정리할 수 있습니다. 다만, 정지중인 스레드의 협조가 필요합니다.
위 내용은 `stop()`을 사용하지 않고 Java에서 스레드를 안전하게 종료하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!