Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9의 destroyForcibly() 메소드 완벽 가이드: 프로세스 강제 종료 방법

Java에서 destroyForcibly() 메소드는 실행 중인 프로세스를 강제로 종료하는 데 사용됩니다. 일반적인 종료 요청에 응답하지 않거나 멈춰 있는(frozen) 프로세스를 처리해야 할 때 특히 유용합니다.

예를 들어, destroyForcibly()를 호출한 직후에는 프로세스가 아직 완전히 종료되지 않았을 수 있으므로 isAlive() 메소드가 여전히 true를 반환할 수 있습니다. 또한 destroyForcibly()는 종료 요청이 성공적으로 접수되면 true를, 실패하면 false를 반환하므로 이 반환값을 활용해 종료 처리 결과를 확인할 수 있습니다.

문법(Syntax)

boolean destroyForcibly()

동작 원리

  • 먼저 정상적인 종료를 시도하는 destroy()와 달리, destroyForcibly()는 운영체제 수준에서 프로세스를 즉시 강제 종료합니다.
  • 종료 요청이 접수되더라도 프로세스가 실제로 종료되기까지 약간의 시간이 걸릴 수 있습니다.
  • 따라서 종료 여부를 확실히 확인하려면 isAlive() 메소드와 함께 사용하는 것이 좋습니다.

예제 코드

아래 예제에서는 메모장(Notepad) 애플리케이션을 실행한 뒤, 5초 후에 destroyForcibly() 메소드를 호출하여 강제로 종료하는 과정을 보여줍니다.

import java.io.IOException;
import java.lang.ProcessBuilder;

public class DestroyForciblyTest {
    public static void main(String args[]) throws IOException, InterruptedException {
        ProcessBuilder pBuilder = new ProcessBuilder();
        pBuilder.command("notepad.exe");

        // 메모장 애플리케이션 시작
        Process process = pBuilder.start();
        System.out.println("Started Notepad Application");

        // 5초간 대기
        Thread.sleep(5000);

        // 메모장 강제 종료
        process.destroyForcibly();
        System.out.println("End of Notepad Application");
    }
}

실행 결과(Output)

Started Notepad Application
End of Notepad Application

정리

ProcessBuilder로 외부 프로그램을 실행하고 Process 객체의 destroyForcibly() 메소드를 호출하면, 응답하지 않는 프로세스도 안전하게 강제 종료할 수 있습니다. 프로세스 관리가 필요한 배치 작업이나 외부 프로그램 연동 시나리오에서 반드시 알아두어야 할 핵심 메소드입니다.