Java
[박혜웅] 프로세스 종료 처리 Runtime.addShutdownHook()
BAGE
2011. 11. 3. 09:44
프로세스가 정상 또는 비정상 종료(Ctrl+C)될 때, 자동적으로 실행되는 스레드를 등록할 수 있다.
Runtime 클래스의 public void addShutdownHook(Thread hook) 또는 ublic boolean removeShutdownHook(Thread hook) 를 이용하여 등록 또는 제거할 수 있다.
위 참고링크에서는 윈도우의 작업관리자에서 강제 종료하여도 실행된다고 하였지만, Windows7에서 테스트한 결과 작업관리자에서 강제 종료할 때는 shutdown hook이 실행되지 않는 것을 확인했다.
아래는 간단한 예제이다.
package com.bagesoft.test.runtime; public class ShutdownHookTest { public ShutdownHookTest() { Runtime.getRuntime().addShutdownHook(new ShutdownHookThread()); } public static void main(String[] args) throws InterruptedException { new ShutdownHookTest(); Thread.sleep(10 * 1000); } public class ShutdownHookThread extends Thread { @Override public void run() { System.out.println("ShutdownHookThread 실행"); } } }