Rumah >Java >javaTutorial >Bolehkah Java Mengendalikan Isyarat SIGKILL, dan Apakah Alternatif untuk Penutupan Anggun?
Pengendalian Isyarat SIGKILL dalam Java
Isyarat SIGKILL, selalunya dikaitkan dengan arahan kill -9, tidak boleh dikendalikan atau ditangkap oleh mana-mana program dalam Java atau mana-mana bahasa lain. Ini ialah ciri reka bentuk yang disengajakan yang memastikan keupayaan untuk menamatkan walaupun proses yang tidak bertindak balas atau berniat jahat.
Memandangkan SIGKILL tidak terurus, tumpuan harus beralih kepada mengendalikan isyarat SIGTERM, yang mewakili permintaan penutupan terkawal. Java menyediakan kaedah Runtime.addShutdownHook() untuk mendaftarkan cangkuk penutupan yang akan dilaksanakan apabila program menerima SIGTERM atau ditamatkan dengan baik.
Mendaftar Cangkuk Penutupan
Untuk mendaftar penutupan cangkuk:
Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { // Perform cleanup tasks System.out.println("Shutdown hook ran!"); } });
Program Contoh
Program ujian berikut menunjukkan penggunaan cangkuk penutupan pada OSX:
public class TestShutdownHook { public static void main(String[] args) throws InterruptedException { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { System.out.println("Shutdown hook ran!"); } }); while (true) { Thread.sleep(1000); } } }
Apabila anda menjalankan program ini dengan kill -15 (SIGTERM), ia akan mencetak "Shutdown hook ran!" seperti yang dijangkakan.
Mengendalikan pembunuhan -9
Seperti yang dinyatakan sebelum ini, membunuh -9 tidak boleh dikendalikan dengan anggun. Walau bagaimanapun, anda boleh melaksanakan penyelesaian menggunakan skrip pembalut atau program pemerhati yang memantau aplikasi utama anda. Apabila aplikasi utama keluar atau ditamatkan, pemerhati boleh melakukan tugas pembersihan atau memberitahu aplikasi lain.
Contoh Skrip Pembungkus
#!/usr/bin/env bash java TestShutdownHook wait # notify your other app that you quit echo "TestShutdownHook quit"
Atas ialah kandungan terperinci Bolehkah Java Mengendalikan Isyarat SIGKILL, dan Apakah Alternatif untuk Penutupan Anggun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!