System.exit()
program kapanmadan önce kapatma kancalarını çalıştırmak için kullanılabilir . Bu, programın tüm bölümlerinin birbirinin farkında olamadığı (ve olmaması gerektiği) daha büyük programlarda kapatmayı ele almanın kullanışlı bir yoludur. Daha sonra, biri istifa etmek isterse, sadece arayabilir System.exit()
ve kapatma kancaları (uygun şekilde ayarlanmışsa) dosyaları kapatma, kaynakları serbest bırakma gibi gerekli tüm kapatma törenlerini yapmaya özen gösterir.
"Bu yöntem asla normal şekilde geri dönmez." sadece yöntemin geri dönmeyeceği anlamına gelir; bir iplik oraya gittiğinde, geri gelmeyecektir.
Bir programdan çıkmanın bir diğer belki de daha yaygın yolu, main
yöntemin sonuna ulaşmaktır . Ancak, çalışan daemon olmayan iş parçacıkları varsa, bunlar kapatılmaz ve bu nedenle JVM çıkmaz. Böylece, böyle bir daemon olmayan iş parçacığınız varsa, tüm daemon olmayan iş parçacıklarını kapatmak ve diğer kaynakları serbest bırakmak için başka yollara (kapatma kancaları dışında) ihtiyacınız vardır. Başka daemon olmayan iş parçacıkları main
yoksa, JVM kapatılır ve kapatma kancaları çağrılır.
Herhangi bir nedenle kapatma kancaları değersiz ve yanlış anlaşılmış bir mekanizma gibi görünüyor ve insanlar tekerleği programlarından çıkmak için her türlü özel özel hack'le yeniden icat ediyorlar. Kapatma kancalarının kullanılmasını teşvik ederim; yine de kullanacağınız standart Çalışma Süresinde hepsi orada .