CTRL+C를 누르거나 프로그램 종료 시 특정 작업 수행 하기
컨트롤+씨 키를 누르면 작업 수행 도중 프로그램이 종료 되어 버리므로 어떤 자원을 사용하고 있었다면 종료하지 못한 채 프로그램이 끝나버림으로서 추후 문제가 발생할 수도 있습니다.
Runtim 클래스의 addShutdownHook 메소드는 프로그램 종료시에 수행 할 쓰레드를 JVM에 알려주는 역할을 합니다. 즉 프로그램이 종료 되기전에 자원을 반환해야 하는 경우(Database 연결, File Close)가 있다면 여가에서 Thread를 만들어 처리를 하시면 됩니다.
public class Shutdown implements Runnable{
public void run() {
//만약 CTRL+C 키가 눌리어 지지 않으면 프로그램이 종료시 호출 됩니다.
System.out.println("프로그램이 종료하게 되어 자원을 반환 합니다.");
}
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);
System.out.println("PRESS CTRL+C to EXIT");
}
}
}
[결과 : 실행 중 CTRL+C키를 누르세요~]
D:\강의자료\자바기본\예제>java Shutdown
PRESS CTRL+C to EXIT
PRESS CTRL+C to EXIT
PRESS CTRL+C to EXIT
프로그램이 종료하게 되어 자원을 반환 합니다.
컨트롤+씨 키를 누르면 작업 수행 도중 프로그램이 종료 되어 버리므로 어떤 자원을 사용하고 있었다면 종료하지 못한 채 프로그램이 끝나버림으로서 추후 문제가 발생할 수도 있습니다.
Runtim 클래스의 addShutdownHook 메소드는 프로그램 종료시에 수행 할 쓰레드를 JVM에 알려주는 역할을 합니다. 즉 프로그램이 종료 되기전에 자원을 반환해야 하는 경우(Database 연결, File Close)가 있다면 여가에서 Thread를 만들어 처리를 하시면 됩니다.
public class Shutdown implements Runnable{
public void run() {
//만약 CTRL+C 키가 눌리어 지지 않으면 프로그램이 종료시 호출 됩니다.
System.out.println("프로그램이 종료하게 되어 자원을 반환 합니다.");
}
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);
System.out.println("PRESS CTRL+C to EXIT");
}
}
}
[결과 : 실행 중 CTRL+C키를 누르세요~]
D:\강의자료\자바기본\예제>java Shutdown
PRESS CTRL+C to EXIT
PRESS CTRL+C to EXIT
PRESS CTRL+C to EXIT
프로그램이 종료하게 되어 자원을 반환 합니다.
'Programming > JAVA' 카테고리의 다른 글
WebLogic서버 감시 데몬 (0) | 2008.04.28 |
---|---|
싱글톤(Singleton)을 만들자~~ (0) | 2008.04.28 |
외부 프로그램 실행 하기 (0) | 2008.04.28 |
메모리 사용량 확인 (0) | 2008.04.28 |
System 환경 읽어 오기 (0) | 2008.04.28 |