zoukankan      html  css  js  c++  java
  • Java 钩子函数编程技巧

    Java提供注册钩子线程,在JVM进程关闭之前,会自动执行这个钩子线程。

    运用这个技巧,可以再JVM关闭之前,释放一些系统资源。

    这个功能利用的是Runtime类来实现。

    public class Hook {
    
    
        public static void main(String args[]){
    
            System.out.println("程序开始执行");
            try{
                Thread.sleep(100);
            }
            catch(Exception ex){
    
            }
    
            Runtime.getRuntime().addShutdownHook(new Thread(){
    
                @Override
                public void run() {
                    System.out.println("执行钩子函数 -- " + 1);
                }
            });
    
            Runtime.getRuntime().addShutdownHook(new Thread(){
    
                @Override
                public void run() {
                    System.out.println("执行钩子函数 -- " + 2);
                }
            });
    
            Runtime.getRuntime().addShutdownHook(new Thread(){
    
                @Override
                public void run() {
                    System.out.println("执行钩子函数 -- " + 3);
                }
            });
    
            Runtime.getRuntime().addShutdownHook(new Thread(){
    
                @Override
                public void run() {
                    System.out.println("执行钩子函数 -- " + 4);
                }
            });
    
    
            System.out.println("程序执行完毕,退出main");
        }
    }

    输出

     可以看到,执行顺序和注册顺序是不一致的。一般也不会 注册多个钩子函数。

    程序开始执行
    程序执行完毕,退出main
    执行钩子函数 -- 2
    执行钩子函数 -- 3
    执行钩子函数 -- 4
    执行钩子函数 -- 1

     同时,还提供了移除钩子函数的功能

      public boolean removeShutdownHook(Thread hook)
  • 相关阅读:
    HTML CSS整理笔记
    2020软件工程最后一次作业
    form表单的基本用法
    图片预加载和懒加载(2)——懒加载
    ES6——promise基础
    图片预加载和懒加载(2)——预加载
    图片预加载和懒加载(1)
    js时间——转换为我们需要的格式
    原生js瀑布流
    富文本——小程序中使用特殊符号及标签
  • 原文地址:https://www.cnblogs.com/lgjlife/p/10669660.html
Copyright © 2011-2022 走看看