Rumah > Java > javaTutorial > Bolehkah Java Mengendalikan Isyarat SIGKILL, dan Apakah Alternatif untuk Penutupan Anggun?

Bolehkah Java Mengendalikan Isyarat SIGKILL, dan Apakah Alternatif untuk Penutupan Anggun?

Linda Hamilton
Lepaskan: 2024-12-06 02:41:09
asal
741 orang telah melayarinya

Can Java Handle SIGKILL Signals, and What's the Alternative for Graceful Shutdown?

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!");
    }
});
Salin selepas log masuk

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);
        }
    }
}
Salin selepas log masuk

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"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan