下面是工具类,使用的时候直接放到项目中,通过调用registerHook
方法来注册退出时的回调,当应用退出时会依次调用注册进去的Runnable
实例
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
/**
* ShutdownHookUtil
*
* @author zhihao.meng
*/
public class AppShutdownHook {
private static final Queue<Runnable> hooks = new LinkedBlockingQueue<>();
public static void registerHook(Runnable runnable) {
hooks.add(runnable);
}
static {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
hooks.forEach(Runnable::run);
}));
}
}