System.exit()
สามารถใช้เพื่อเรียกใช้hooks ปิดก่อนที่โปรแกรมจะหยุดทำงาน นี่เป็นวิธีที่สะดวกในการจัดการการปิดในโปรแกรมที่ใหญ่กว่าซึ่งทุกส่วนของโปรแกรมไม่สามารถ (และไม่ควร) รับรู้ซึ่งกันและกัน จากนั้นหากมีคนต้องการที่จะออกจากเขาก็สามารถโทรSystem.exit()
และขอปิดระบบ (ถ้าตั้งค่าอย่างถูกต้อง) ดูแลการทำพิธีปิดที่จำเป็นทั้งหมดเช่นไฟล์ปิดการปล่อยทรัพยากร ฯลฯ
"วิธีนี้จะไม่ส่งคืนตามปกติ" หมายความว่าวิธีจะไม่กลับมา; เมื่อเธรดไปที่นั่นมันจะไม่กลับมา
อีกวิธีหนึ่งที่อาจพบได้บ่อยกว่าคือการออกจากโปรแกรมคือการไปให้ถึงจุดสิ้นสุดของmain
วิธีการ แต่ถ้ามีเธรดที่ไม่ใช่ daemon กำลังทำงานอยู่เธรดเหล่านั้นจะไม่ถูกปิดดังนั้น JVM จะไม่ออก ดังนั้นหากคุณมีเธรดที่ไม่ใช่ daemon ใด ๆ คุณต้องมีวิธีอื่น (นอกเหนือจาก hooks การปิดระบบ) เพื่อปิดเธรดที่ไม่ใช่ daemon ทั้งหมดและปล่อยทรัพยากรอื่น ๆ หากไม่มีเธรดอื่นที่ไม่ใช่ daemon การส่งคืนจากmain
จะปิด JVM และจะเรียกใช้ hooks การปิด
ด้วยเหตุผลบางประการการปิดระบบของ hooks ดูเหมือนจะเป็นกลไกที่ไม่คุ้มค่าและเข้าใจผิดและผู้คนต่างคิดค้นล้อด้วยแฮ็กแบบกำหนดเองที่เป็นกรรมสิทธิ์ทุกประเภทเพื่อออกจากโปรแกรมของพวกเขา ฉันอยากจะแนะนำให้ใช้ hooks ปิด; มันมีอยู่ในรันไทม์มาตรฐานที่คุณจะใช้อยู่ดี