Rumah  >  Artikel  >  Java  >  Cangkuk Pemadaman Java

Cangkuk Pemadaman Java

PHPz
PHPzasal
2024-08-30 16:05:59650semak imbas

Satu binaan khas dalam Java yang membolehkan pembangun melakukan pemalam bagi sekeping kod yang akan dilaksanakan semasa menutup mesin maya java dan ini sangat diperlukan apabila kita perlu melakukan operasi pembersihan semasa penutupan mesin maya java dan mesin maya dimatikan kerana sebab-sebab seperti pembunuhan permintaan oleh sistem pengendalian atau masalah sumber tidak dapat diselesaikan menggunakan binaan umum tetapi boleh diselesaikan dengan menggunakan blok kod sewenang-wenang yang disediakan oleh penutupan hook dan ia adalah lanjutan java.lang.Kelas thread dan logik yang diperlukan disediakan dalam kaedah public void run() semasa menutup mesin maya java.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Kerja Shutdown Hook di Java

  • Terdapat dua cara berbeza mesin maya java boleh ditutup. Mereka ialah:
    • Satu proses yang terkawal.
    • Tiba-tiba.
  • Proses yang dikawal boleh menyebabkan mesin maya java dimatikan apabila mana-mana perkara berikut berlaku:
    • Penamatan utas bukan daemon yang terakhir. Contohnya, mesin maya java mula dimatikan dengan keluar dari urutan utama.
    • Isyarat gangguan dihantar daripada sistem pengendalian. Contohnya, log keluar daripada sistem pengendalian atau dengan menekan CTRL + C.
    • exit() dipanggil daripada kod java.
  • Mesin maya java boleh mula dimatikan secara tiba-tiba apabila mana-mana perkara berikut berlaku:
    • Jika isyarat bunuh dihantar daripada sistem pengendalian.
    • getRuntime().halt() dipanggil daripada kod java.
    • Kematian sistem pengendalian hos yang tidak dijangka. Contohnya, kes kegagalan kuasa.
  • Mesin maya java membenarkan fungsi berdaftar dijalankan sebelum selesai mematikan sistem. Sumber boleh dikeluarkan atau aktiviti pengemasan tertentu boleh dilakukan menggunakan fungsi ini. Fungsi ini dipanggil cangkuk penutupan dalam terminologi mesin maya java.
  • Kait penutupan ini semuanya dimulakan tetapi urutan ini belum dimulakan. Semua cangkuk berdaftar diproses dalam susunan yang tidak ditentukan apabila mesin maya java memulakan proses penutupan. Mesin maya java akan berhenti selepas memproses semua cangkuk.
  • Pertimbangkan program di bawah untuk menunjukkan penggunaan cangkuk penutupan dalam Java:

Kod:

//a class called mythr is defined and it extends a thread
class MyThr extends Thread
{
public void run()
{
System.out.println("The task of shut down hook is completed");
}
}
<em>//a class called shutdown is defined</em>
public class Shutdown
{
<em>//main method is called</em>
public static void main(String[] args)throws Exception
{
<em>//an instance of java runtime class is created</em>
Runtime roll=Runtime.getRuntime();
<em>//shutdown hook method is called using the instance of runtime class and the instance of mythr class is created</em>
roll.addShutdownHook(new MyThr());
System.out.println("The main starts to sleep. Press control and c to exit");
try
{
Thread.sleep(3000);
}
catch (Exception e)
{
}
}
}

Output program di atas adalah seperti yang ditunjukkan dalam syot kilat di bawah:

Cangkuk Pemadaman Java

Dalam program di atas, kelas yang dipanggil mthr ditakrifkan dan ia memanjangkan urutan. Kemudian kelas yang dipanggil penutupan ditentukan. Kemudian kaedah utama dipanggil. Kemudian contoh kelas runtime java dicipta. Kemudian kaedah cangkuk penutupan dipanggil menggunakan contoh kelas runtime dan contoh kelas mythr dicipta. Kaedah shutdown hook menyebabkan penyata cetakan dalam kelas penutupan dicetak dicetak diikuti dengan penyataan dalam kaedah larian kelas mythr. Output program adalah seperti yang ditunjukkan dalam syot kilat di atas.

Contoh Java Shutdown Hook

Berikut ialah contoh berikut yang disebut di bawah:

Contoh #1

Atur cara Java untuk menunjukkan penggunaan cangkuk penutupan dalam program:

Kod:

//a class called shutdown is defined
public class ShutDown
{
//main method is called
public static void main(String[] args)
{
//an instance of java runtime class is created and a new thread constructor is passed as a parameter to shutdown hook method
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
System.out.println("the shut down hook is in progress !");
}
});
System.out.println("Termination of application ...");
}
}

Output program di atas adalah seperti yang ditunjukkan dalam syot kilat di bawah:

Cangkuk Pemadaman Java

Dalam program di atas, kelas yang dipanggil untuk ditutup ditentukan. Kemudian kaedah utama dipanggil. Kemudian contoh kelas runtime java dicipta dan pembina benang baharu diluluskan sebagai parameter untuk kaedah cangkuk penutupan. Output program ditunjukkan dalam syot kilat di atas.

Contoh #2

Atur cara Java untuk menunjukkan penggunaan cangkuk penutupan dalam program:

Kod:

//a class called demo is defined
public class Demo
{
// a class called mess is defined and it extends a thread and this function is called when the program is exiting
static class Mess extends Thread
{
public void run()
{
System.out.println("Good Bye.");
}
}
//main method is called
public static void main(String[] args)
{
try
{
//shutdown hook method is called to which the instance of the class mess is passed as a parameter
Runtime.getRuntime().addShutdownHook(new Mess());
// the beginning of the program is printed
System.out.println("Beginning of the program...");
// the wait time for the thread is printed
System.out.println("The wait time for the thread is three seconds...");
Thread.sleep(3000);
//Ending of the program is printed
System.out.println("Ending of the program...");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Output program di atas adalah seperti yang ditunjukkan dalam syot kilat di bawah:

Cangkuk Pemadaman Java

Dalam atur cara di atas, kucar-kacir kelas ditakrifkan dan ia memanjangkan utas dan fungsi ini dipanggil apabila atur cara keluar. Kemudian kaedah utama dipanggil. Kemudian kaedah cangkuk penutupan dipanggil yang mana contoh kekacauan kelas diluluskan sebagai parameter. Kemudian permulaan program dicetak. Kemudian masa menunggu untuk benang dicetak. Kemudian Pengakhiran program dicetak. Output program adalah seperti yang ditunjukkan dalam syot kilat di atas.

Kelebihan Java Shutdown Hook

Terdapat beberapa kelebihan cangkuk penutup Java. Mereka ialah:

  • Ciri penting mesin maya java ialah cangkuk penutupan kerana ia menyediakan kapasiti untuk melakukan pembersihan sumber atau menyimpan keadaan aplikasi apabila mesin maya java ditutup.
  • Cakuk penutupan boleh dilaksanakan pada masa jalan apabila mesin maya java dimatikan secara normal atau secara tiba-tiba.
  • Lebih daripada satu cangkuk penutupan boleh didaftarkan pada bila-bila masa semasa menjalankan mesin maya java melalui antara muka pengaturcaraan aplikasi masa jalan.

Kesimpulan

Dalam tutorial ini, kami memahami konsep cangkuk penutupan dalam Java melalui definisi, kerja cangkuk penutupan dalam java melalui contoh dan outputnya.

Atas ialah kandungan terperinci Cangkuk Pemadaman Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Templat dalam JavaArtikel seterusnya:Templat dalam Java