강좌 & 팁
글 수 2,412
2015.01.11 14:31:21 (*.199.128.77)
67521
Java에서 어플리케이션을 종료 될때 뭔가를 작업 하고 싶을 경우에 addShutdownHook이란 걸 사용 할 수 있습니다.
addShutdownHook은 VM에서 사라지기 전에 마지막 유언을 할 수 있게 해줍니다.^^;
Ctrl+C, 또는 kill명령으로 강제 종료가 될때도 실행이 됩니다. 위에서 말했듯 마지막 유언을 남기기 위해....
그럼 샘플 소스입니다.
[샘플 소스]
public class ShutdownHookDemo {
static class ByeMessage extends Thread {
public void run() {
System.out.println("프로그램이 종료 되었습니다.!!!!");
}
}
public static void main(String[] args) {
// 자바가 종료 될때 실행 시킬 쓰레드를 등록 시킴.
Runtime.getRuntime().addShutdownHook(new ByeMessage());
try {
// 프로그램 시작 메세지
System.out.println("프로그램 시작!!!!");
// 3초간 대기 함.
System.out.println("대기 3초!!!");
Thread.sleep(3000);
// 프로그램 종료
System.out.println("프로그램 종료!!!");
} catch(Exception e) {
e.printStackTrace();
}
}
}
[실행]
addShutdownHook에는 쓰레드가 등록 됩니다.
샘플에는 대기를 3초로 하고 이클립스에서 실행 시켜서 정상적으로 종료 하도록 하였지만,
커멘드창에서 프로그램을 실행 시킨후, 3초가 되기전에 Ctrl+C를 눌러 종료 시키면
"프로그램이 종료 되었습니다.!!!!"라는 메세지가 뜨고 "프로그램 종료!!!!"라는 메세지는 뜨지 않습니다.
한번 테스트 해보세요.
감사합니다.


