Membuat JVM Shutdown Hook Java dan Fungsinya
Sebelum mempelajari materi tentang Membuat JVM Shutdown Hook Java dan Fungsinya, terlebih dahulu pelajari materi tentang: Sistem Penamaan Bahasa Pemrograman Java, Java Virtual Machine dan Fungsinya, dan Membuat JVM Stack Area Java dan Fungsinya.
/* JVM shutdown hook pada bahasa pemrograman Java */
public class ShutDownHook
{
public static void main(String[] args)
{
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run(){
System.out.println("Shutdown Hook dijalankan!");}
});
System.out.println("Aplikasi dimatikan ...");
}
}
/* JVM Shotdown Hook pada bahasa pemrograman Java */
class ThreadChild extends Thread {
public void run() {
System.out.println("Membersihkan kode program");
System.out.println("Melakukan shutdown hook");
}
}
class Demo {
public static void main(String[] args) {
Runtime current = Runtime.getRuntime();
current.addShutdownHook(new ThreadChild());
for(int i = 1; i <= 10; i++)
System.out.println("2 X " + i + " = " + 2 * i);
}
}
satu, Dalam beberapa kondisi shutdown hook mungkin tidak dapat dieksekusi.
Satu hal yang perlu diingat adalah perintah shutdown hook tidak selamanya dapat dijalankan dalam program. Jika JVM mengalami kerusakan, maka kemungkinan kerusakan atau error tersebut tidak akan memberikan kesempatan untuk mengeksekusi perintah shutdown hook. Juga, jika O/S memberikan SIGKILL (googling saja!), maka aplikasi harus dimatikan lebih awal tanpa melakukan aktifitas pembersihan memori. Hal lain yang mungkin terjadi apabila JVM ingin dimatikan tanpa menggunakan perintah shutdown hook adalah menggunakan method Runime.halt().
Shutdown hook hanya akan dipanggil apabila aplikasi dimatikan secara normal atau apabila semua thread telah selesai dijalankan atau ketika memanggil perintah System.exit(0). Dan juga, JVM akan dimatikan bila disebabkan oleh kondisi eksternal seperti permintaan user untuk mematikan, ada sinyal SIGTERM dari O/S (atau perintah mematikan secara normal), atau operating system berhenti beroperasi.
dua, Saat perintah shutdown hook dipanggil, maka shutdown hook dapat berhenti beroperasi tanpa menyelesaikan eksekusi perintahnya.
Hal ini sama seperti kondisi khusus yang telah dijelaskan sebelumnya. Meskipun shutdown hook telah menjalankan perintahnya, bukan tidak mungkin proses eksekusi shutdown hook dapat terhenti ditengah jalan seperti ketika kondisi operating system yang mati atau berhenti beroperasi pada saat pengoperasian. Untuk kasus ini, O/S akan menunggu proses dimatikan untuk mengetahui jumlah waktu spesifik ketika SIGTERM dijalankan. Namun, jika proses belum dimatikan sesuai batas waktu yang diberikan, maka O/S akan mematikan proses secara paksa dengan mengeluarkan perintah SIGTERM (atau counterparts pada Windows). Kondisi ini mungkin saja terjadi jika perintah shutdown hook mati ketika perintah baru setengah jalan untuk dieksekusi.
Penting untuk memerhatikan bahwa perintah shutdown hook harus dibuat dengan hati-hati, memastikan agar perintah shutdown hook dapat dieksekusi secara cepat dan tidak menyebabkan situasi deadlock. Dan juga, JavaDoc khususnya mengingatkan bahwa perintah tersebut seharusnya tidak dijalankan pada bagian program yang membutuhkan proses kalkulasi panjang atau saat proses menunggu input I/O.
tiga, Shutdown hook dapat memiliki lebih dari satu perintah dalam proses pengoperasiannya, namun tidak dapat menjamin apakah semua perintah tersebut dapat dieksekusi semua.
Method addShutdownHook dapat di-register lebih dari satu method pada aplikasi. Hanya saja tidak bisa dijamin apakah semua perintah tersebut dapat dieksekusi oleh JVM. JVM hanya bisa mengeksekusi shutdown hook dalam perintah arbiter. Lebih dari itu, JVM mungkin akan mengeksekusi semua perintah shutdown hook secara bersamaan.
empat, Tidak bisa membuat shotdown hook dalam shutdown hook.
Hanya ada satu rangkaian eksekusi shutdown hook pada JVM, tidak diizinkan menambahkan lebih dari satu perintah shutdown hook. Jika terdapat lebih dari satu shutdown hook maka JVM akan menganggapnya sebagai IllegalStateException.
lima, Ketika perintah shutdown hook dijalankan, perintah tersebut hanya bisa dihentikan dengan Runtime.halt().
Ketika rangkaian perintah shutdown hook telah dijalankan, hanya Runtime.halt() yang dapat menghentikan proses eksekusi secara paksa pada JVM dari rangkaian perintah eksekusi, kecuali ada faktor eksternal seperti SIGKILL. Artinya, pemanggilan perintah System.exit() di dalam shutdown hook tidak akan berfungsi. Hanya saja, jika pemanggilan System.exit() dilakukan dalam perintah shutdown hook, kemungkinan mesin virtual akan mengalami kemacetan dan terpaksa harus dimatikan secara paksa.
enam, Penggunaan shutdown hook memerlukan persyaratan izin keamanan.
Jika komputer menggunakan Java Securityy managers, maka penambahan atau penghapusan perintah shutdown hook memerlukan izin runtime. Jika menghubungkan method tersebut tanpa melakukan permintaan izin pada security manager, maka method tersebut akan menghasilkan SecurityException.
- Pemeliharaan Terkontrol:
- Eksekusi Kode Sebelum Penutupan: Shutdown Hook memungkinkan pengembang untuk menetapkan kode tertentu yang akan dieksekusi sebelum JVM benar-benar berhenti. Hal ini memungkinkan pembersihan sumber daya dan pemeliharaan terkontrol sebelum aplikasi berakhir.
- Pencegahan Kehilangan Data: Dengan menetapkan tindakan pemeliharaan melalui Shutdown Hook, aplikasi dapat mencegah kehilangan data yang penting atau melaksanakan tugas tertentu sebelum menutup.
- Pembebasan Sumber Daya:
- Pembersihan Sumber Daya Eksternal: Shutdown Hook dapat digunakan untuk membebaskan sumber daya eksternal, seperti koneksi database, file handle, atau koneksi jaringan. Ini membantu mencegah kebocoran sumber daya yang dapat terjadi jika aplikasi berhenti secara tiba-tiba.
- Penghentian Proses yang Aman: Dengan melakukan pembersihan sumber daya eksternal, aplikasi dapat berhenti dengan cara yang lebih aman, menghindari masalah atau kerusakan data yang dapat terjadi jika sumber daya tidak dibebaskan secara benar.
- Logging dan Pemantauan:
- Rekam Kegiatan Terakhir: Shutdown Hook dapat digunakan untuk penyimpan kegiatan terakhir atau status aplikasi sebelum berhenti. Ini dapat berguna untuk keperluan logging dan pemantauan, memberikan wawasan tentang kondisi terakhir aplikasi.
- Pemberitahuan Kepada Administrator: Dengan mengimplementasikan Shutdown Hook, aplikasi dapat memberikan pemberitahuan kepada administrator atau sistem pemantauan bahwa aplikasi akan berhenti, memberikan kesempatan untuk reaksi yang sesuai.
- Menangani Sinyal dan Exception:
- Penanganan Sinyal: Shutdown Hook memungkinkan penanganan yang lebih baik terhadap sinyal-sinyal yang dapat menyebabkan aplikasi berhenti. Ini dapat membantu dalam menangani kondisi abnormal atau kesalahan yang mungkin terjadi.
- Exception Handling: Shutdown Hook memberikan kesempatan untuk menangani exception dan kesalahan secara terkontrol, memungkinkan aplikasi untuk memberikan pesan kesalahan yang informatif atau melakukan tindakan pemulihan sebelum penutupan.
- Kustomisasi dan Fleksibilitas:
- Skenario Khusus: Shutdown Hook memungkinkan pengembang untuk menyesuaikan tindakan yang berbeda tergantung pada skenario penutupan aplikasi. Ini memberikan fleksibilitas dalam menangani berbagai situasi penutupan.
- Menghindari Kerugian Data: Dengan kemampuan untuk menyesuaikan tindakan yang dilakukan saat penutupan, Shutdown Hook membantu menghindari kerugian data atau kerugian fungsionalitas yang mungkin terjadi jika aplikasi tidak ditutup dengan benar.
Kesimpulan
- Menghubungkan Database Java Menggunakan JDBC
- Menjalankan Program Java Tanpa Method Main
- Nama Kelas File Java dan Fungsinya
- Cara Menjalankan Class File Java pada Direktori
- Keunggulan Microservices Java dan Fungsinya
- Cara Predefinisi Class Java Sebagai Class atau Variabel
- Cara Menjadi Programmer Java yang Handal
5 komentar untuk "Membuat JVM Shutdown Hook Java dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa yang dimaksud dengan shutdown hook pada bahasa pemrograman Java?
BalasHapusShutdown Hook pada Java secara sederhanya adalah sebuah utas yang diinisialisasi tetapi belum dimulai pada thread. Ketika JVM memulai urutan shutdown, proses tersebut akan memulai semua hook shutdown hook yang terdaftar dalam beberapa urutan yang tidak ditentukan dan akan membiarkannya berjalan secara bersamaan.
HapusDalam bahasa pemrograman Java programmer dapat membuat shutdown hook pada program yang dikembangkannya, dimana programmer dapat membuat suatu thread baru dan memberikan logika yang dapat dijalankan ketika JVM akan dimatikan. Kemudian programmer juga dapat mendaftarkan clss instance thrread sebagai shutdown hook ke mesin virtual atau JVM menggunakan Runtime.getRuntime().
BalasHapusApa yang dimaksud dengan hook pada bahasa pemrograman Java?
BalasHapusHook dalam bahasa pemrograman Java adalah suatu method dari potongan kode progan yang diletakkan didepan potongan kode program lainnya, sehingga potongan kode program pertama akan dieksekusi sebelum potongan kedua dieksekusi, dan sekaligus memberikan potongan kode program pertama kesempatan untuk melakukan pemantauan atau penyarikan dari behavior-nya dari potongan kode program ke dua pada Java.
Hapus