Java对信号的处理

Java对信号的处理

本文主要包括Java如何处理信号,直接上代码。

1. 实现SignalHandler

package com.chzhao.SignalTest;

import sun.misc.*;

@SuppressWarnings("restriction")
public class TestSignal implements SignalHandler {

    public void handle(Signal arg0) {
        System.out.println(arg0.getName() + "is recevied.");
    }
}

2.主函数部分

package com.chzhao.SignalTest;

import sun.misc.*;

public class App {
    @SuppressWarnings("restriction")
    public static void main(String[] args) {
        TestSignal handler = new TestSignal();
        Signal.handle(new Signal("TERM"), handler);
        Signal.handle(new Signal("INT"), handler);
        Signal.handle(new Signal("USR1"), handler);
        Signal.handle(new Signal("USR2"), handler);
        for (;;) {
            System.out.println("do something");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

这里面注册了4个信号。

在Linux下支持的信号(具体信号kill -l命令查看):
SEGV, ILL, FPE, BUS, SYS, CPU, FSZ, ABRT, INT, TERM, HUP, USR1, USR2, QUIT, BREAK, TRAP, PIPE
在Windows下支持的信号:
SEGV, ILL, FPE, ABRT, INT, TERM, BREAK

发布了139 篇原创文章 · 获赞 146 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/qq_40741855/article/details/104810610