Java 注册SIGINT信号,处理CTRL+C

java使用 Runtime.getRuntime().addShutdownHook来接受关闭程序的信号,示例代码如下:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class test {
    static final int MAX_T = 3;
    static ExecutorService pool = Executors.newFixedThreadPool(MAX_T);

    public static void main(String[] args) {
        pool.execute(() -> {
            System.out.println("new thread");
        });
        Runtime.getRuntime().addShutdownHook(new Thread() {
            public void run() {
                pool.shutdown();
                System.out.println("pool shutdown success.");
                System.out.println("Exited!");
            }
        });
    }
}

如果使用lamdba 表达式,可以更简洁:

        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                pool.shutdown();
                System.out.println("pool shutdown success.");
                System.out.println("Exited!");
        }));

猜你喜欢

转载自blog.csdn.net/zhangpeterx/article/details/89454050