2013-02-05 21 views
8

Olası Çoğalt çökerse yürütmek üzere garantili mi: Ben shutdownhook JVM çökerse senaryoda yürütmek için garantili olup olmadığını bilmek istiyorum
When Shutdown Hooks Break BadShutdownhook JVM

.

+0

Hatta javadoc okumamış gibi görünüyor… –

+2

Örneğin, makineyi kapatırsanız, hiçbir şey olmadığını garanti edilir artık oluyor. Sonuç: JVM, dünyayı JVM'nin dışında kontrol edemez. –

+0

Bunu mu demek istediniz: JVM Crash? Hayır. İstisna sonrası bir kapatma demek istiyorsan, o zaman koşmalılar. İnsanların bir JVM Crash hakkında konuştukları zamanların çoğu, programlarının bir İstisna veya bir Hata attığı anlamına gelir. –

cevap

11

Nope. the docs:

Nadir durumlarda, sanal makine durdurabilir, yani, temiz bir şekilde kapatılmadan çalışmayı durdurabilir. Bu, sanal makine harici olarak sonlandırıldığında, örneğin Unix'teki SIGKILL sinyali veya Microsoft Windows'daki TerminateProcess çağrısı ile gerçekleşir. Sanal makine, örneğin, iç veri yapılarını bozarak veya varolmayan belleğe erişmeye çalışırken, yerel bir yöntem tarafından ters giderse iptal edebilir. Sanal makine iptal edilirse, herhangi bir kapatma kancalarının çalıştırılıp çalıştırılmayacağı konusunda hiçbir garanti verilemez.

shutdownhook ancak JVM önce yapılması gereken neyse görevler için bir iş parçacığı oluşturur

1

(vurgu benim) kapatma başlar ve makine kendisi kapatma alırsa iplik shutdownhook yarattığı
asla Orada işlem için CPU döngüleri ve ben burada stophook idam edilmeyecektir ...

+0

JVM çökerse ne olacağını sordun, bilgisayar zorla kapatılırsa ne olmaz. İkinci durumda, güç kaldırıldıktan sonra hiçbir şeyin (kapatma kancaları bile değil) yürütülmesinin sezgisel olarak açık olduğunu düşünüyorum. – nneonneo

+0

hey teşekkürler! Sadece JVM'nin düşme olasılı senaryoları üzerinde çalışıyordum. –