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();
        }
	}
}



[실행]

shutdown_1.PNG



addShutdownHook에는 쓰레드가 등록 됩니다.


샘플에는 대기를 3초로 하고 이클립스에서 실행 시켜서 정상적으로 종료 하도록 하였지만,


 커멘드창에서 프로그램을 실행 시킨후, 3초가 되기전에 Ctrl+C를 눌러 종료 시키면 


"프로그램이 종료 되었습니다.!!!!"라는 메세지가 뜨고 "프로그램 종료!!!!"라는 메세지는 뜨지 않습니다.


한번 테스트 해보세요.



감사합니다.