Here is a pretty good guide to signal handling in Java. Nó bao gồm các trường hợp tắt máy và chấm dứt, bao gồm cả Ctrl-C.
Cuộc gọi cụ thể bạn muốn có trong Thời gian chạy, addShutdownHook.
Vẫn còn các trường hợp cụ thể mà bạn không thể xử lý ... thường có một số cách cho hệ điều hành vừa mới hoàn toàn xóa ứng dụng mà không cho phép cơ hội lưu chính nó. Bạn không thể bao gồm mọi trường hợp thông qua cơ chế này. Để báo cho JavaDoc
Trong trường hợp hiếm hoi, máy ảo có thể hủy, nghĩa là, ngừng chạy mà không tắt máy sạch. Điều này xảy ra khi máy ảo bị chấm dứt bên ngoài, ví dụ với tín hiệu SIGKILL trên Unix hoặc cuộc gọi TerminateProcess trên Microsoft Windows. Máy ảo cũng có thể hủy bỏ nếu một phương thức nguyên bản bị hỏng, ví dụ, làm hỏng cấu trúc dữ liệu nội bộ hoặc cố gắng truy cập bộ nhớ không tồn tại. Nếu máy ảo hủy bỏ thì không có sự bảo đảm nào có thể được thực hiện về việc có hay không bất kỳ móc tắt máy nào sẽ được chạy.
Nguồn
2009-07-16 04:43:06
Chỉ cần nhận thấy điều này trông giống như một câu hỏi trùng lặp: http://stackoverflow.com/questions/264825/get-notification-on-a-java-process-termination/264833 –