컨트롤+씨 키를 누르면 작업 수행 도중 프로그램이 종료 되어 버리므로 어떤 자원을 사용하고 있었다면 종료하지 못한 채 프로그램이 끝나버림으로서 추후 문제가 발생할 수도 있습니다.

Runtim 클래스의 addShutdownHook 메소드는 프로그램 종료시에 수행 할 쓰레드를 JVM에 알려주는 역할을 합니다. 즉 프로그램이 종료 되기전에 자원을 반환해야 하는 경우(Database 연결, File Close)가 있다면 여가에서 Thread를 만들어 처리를 하시면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Shutdown implements Runnable{
    public void run(){
        System.out.println("system down");
    }    
    public static void main(String[] args) throws Exception {
        Runtime r = Runtime.getRuntime();
                
        //프로그램 종료시(CTRL+C를 누르는 경우도 해당)실행 할 쓰레드를 JVM에 알려 줍니다.
        r.addShutdownHook(new Thread(new Shutdown()));
 
        //1초 간격으로 "PRESS CTRL+C to EXIT"라는 문자열을 출력 합니다.
        for(int i=0; i<20; i++) {
            Thread.sleep(1000);
        }
    }
}
 
 
cs

[결과 : 실행 중 CTRL+C키를 누르세요~]

PRESS CTRL+C to EXIT

PRESS CTRL+C to EXIT

PRESS CTRL+C to EXIT

프로그램이 종료하게 되어  자원을 반환 합니다.


[출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecJava&wr_id=408



정말 감사합니다 ㅠㅠ 이런 황금같은 정보를 주시다니 ... 프레임에서 X종료 아이콘을 눌를때 반환을 해야하나 매우 걱정했는데 이런 황금같은 정보가 있어서 다행입니다 ...



+ Recent posts