강좌 & 팁
글 수 2,412
2015.01.11 14:31:21 (*.199.128.77)
40951
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를 눌러 종료 시키면
"프로그램이 종료 되었습니다.!!!!"라는 메세지가 뜨고 "프로그램 종료!!!!"라는 메세지는 뜨지 않습니다.
한번 테스트 해보세요.
감사합니다.