2010-06-04 31 views

Trả lời

26

Bạn có thể thêm shutdown hook để thực hiện bất kỳ việc dọn dẹp nào.

Như thế này:

public class myjava{ 
    public static void main(String[] args){ 
     Runtime.getRuntime().addShutdownHook(new Thread() { 
     @Override 
      public void run() { 
       System.out.println("Inside Add Shutdown Hook"); 
      } 
     }); 

     System.out.println("Shut Down Hook Attached."); 

     System.out.println(5/0);  //Operating system sends SIGFPE to the JVM 
            //the JVM catches it and constructs a 
            //ArithmeticException class, and since you 
            //don't catch this with a try/catch, dumps 
            //it to screen and terminates. The shutdown 
            //hook is triggered, doing final cleanup. 
    } 
} 

Sau đó chạy nó:

[email protected]:~$ javac myjava.java 
[email protected]:~$ java myjava 
Shut Down Hook Attached. 
Exception in thread "main" java.lang.ArithmeticException:/by zero 
     at myjava.main(myjava.java:11) 
Inside Add Shutdown Hook 
+3

Mục nhập blog là 404 – luckydonald

4

Một cách khác để xử lý tín hiệu trong Java là thông qua các gói sun.misc.signal. Tham khảo http://www.ibm.com/developerworks/java/library/i-signalhandling/ để biết cách sử dụng.

LƯU Ý: Chức năng nằm trong gói mặt trời. * Cũng có nghĩa là nó có thể không di động/hoạt động giống nhau trên tất cả các hệ điều hành. Nhưng bạn có thể muốn thử nó.

+0

Nhưng trên thực tế, nó cũng giống nhau? –

+1

Không - không chính xác. API xử lý tín hiệu tôi đã đề cập có thể được sử dụng để xử lý hầu hết các tín hiệu hệ điều hành gốc (bẫy, ​​intr, kill, vv) trong Java Apps. Mặt khác ShutdownHook chỉ được gọi khi JVM cuối cùng kết thúc (sau khi nhận được tín hiệu kill). – arcamax

+0

@arcamax liên kết dường như bị hỏng – GreenGiant

Các vấn đề liên quan