System.exit()
có thể được sử dụng để chạy các móc tắt máy trước khi thoát khỏi chương trình. Đây là một cách thuận tiện để xử lý tắt máy trong các chương trình lớn hơn, trong đó tất cả các phần của chương trình không thể (và không nên) biết về nhau. Sau đó, nếu ai đó muốn thoát, anh ta có thể gọi đơn giản System.exit()
và các móc tắt máy (nếu được thiết lập đúng cách) sẽ thực hiện tất cả các nghi thức tắt máy cần thiết như đóng tệp, giải phóng tài nguyên, v.v.
"Phương pháp này không bao giờ trở lại bình thường." có nghĩa là phương thức sẽ không trở lại; một khi một chủ đề đến đó, nó sẽ không trở lại.
Một cách khác, có thể phổ biến hơn, để thoát khỏi một chương trình là chỉ đơn giản là đi đến cuối main
phương thức. Nhưng nếu có bất kỳ luồng không phải daemon nào đang chạy, chúng sẽ không bị tắt và do đó JVM sẽ không thoát. Do đó, nếu bạn có bất kỳ luồng không phải daemon nào như vậy, bạn cần một số phương tiện khác (ngoài móc tắt máy) để tắt tất cả các luồng không phải daemon và giải phóng các tài nguyên khác. Nếu không có các luồng không phải daemon nào khác, quay trở lại main
sẽ tắt JVM và sẽ gọi các móc tắt máy.
Vì một số lý do, móc tắt máy dường như là một cơ chế bị đánh giá thấp và bị hiểu lầm, và mọi người đang phát minh lại bánh xe với tất cả các loại hack tùy chỉnh độc quyền để thoát khỏi chương trình của họ. Tôi sẽ khuyến khích sử dụng móc tắt máy; tất cả đều có trong Runtime tiêu chuẩn mà bạn sẽ sử dụng.