Java中的一种特殊构造,允许开发人员制作一段代码的插件,该代码将在java虚拟机关闭期间执行,当我们必须在关闭期间执行清理操作时,这是非常必要的java虚拟机的down以及由于操作系统杀死请求或者资源问题等原因而导致的虚拟机关闭,不能用通用的构造来解决,而是可以使用shutdown提供的任意代码块来解决hook,它是 java.lang.Thread 类的扩展,在 java 虚拟机关闭期间,在 public void run() 方法内提供了必要的逻辑。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
代码:
//a class called mythr is defined and it extends a thread class MyThr extends Thread { public void run() { System.out.println("The task of shut down hook is completed"); } } <em>//a class called shutdown is defined</em> public class Shutdown { <em>//main method is called</em> public static void main(String[] args)throws Exception { <em>//an instance of java runtime class is created</em> Runtime roll=Runtime.getRuntime(); <em>//shutdown hook method is called using the instance of runtime class and the instance of mythr class is created</em> roll.addShutdownHook(new MyThr()); System.out.println("The main starts to sleep. Press control and c to exit"); try { Thread.sleep(3000); } catch (Exception e) { } } }
上述程序的输出如下图所示:
在上面的程序中,定义了一个名为 mthr 的类,它扩展了一个线程。然后定义了一个名为shutdown的类。然后调用main方法。然后创建一个java运行时类的实例。然后使用运行时类的实例调用 shutdown hook 方法,并创建 myhr 类的实例。 shutdown 钩子方法导致 shutdown 类中的 print 语句被打印出来,然后是 myhr 类的 run 方法中的语句。程序的输出如上面的快照所示。
以下是下面提到的示例:
Java程序演示在程序中使用shutdown hook:
代码:
//a class called shutdown is defined public class ShutDown { //main method is called public static void main(String[] args) { //an instance of java runtime class is created and a new thread constructor is passed as a parameter to shutdown hook method Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { System.out.println("the shut down hook is in progress !"); } }); System.out.println("Termination of application ..."); } }
上述程序的输出如下图所示:
上面的程序中,定义了一个调用关闭的类。然后调用main方法。然后创建一个 java 运行时类的实例,并将一个新的线程构造函数作为参数传递给 shutdown hook 方法。程序的输出如上面的快照所示。
Java程序演示在程序中使用shutdown hook:
代码:
//a class called demo is defined public class Demo { // a class called mess is defined and it extends a thread and this function is called when the program is exiting static class Mess extends Thread { public void run() { System.out.println("Good Bye."); } } //main method is called public static void main(String[] args) { try { //shutdown hook method is called to which the instance of the class mess is passed as a parameter Runtime.getRuntime().addShutdownHook(new Mess()); // the beginning of the program is printed System.out.println("Beginning of the program..."); // the wait time for the thread is printed System.out.println("The wait time for the thread is three seconds..."); Thread.sleep(3000); //Ending of the program is printed System.out.println("Ending of the program..."); } catch (Exception e) { e.printStackTrace(); } } }
上述程序的输出如下图所示:
在上面的程序中,定义了一个mess类,它扩展了一个线程,并在程序退出时调用该函数。然后调用main方法。然后调用 shutdown 钩子方法,将混乱类的实例作为参数传递给该方法。然后打印程序的开头。然后打印线程的等待时间。然后打印程序的结束信息。程序的输出如上面的快照所示。
Java shutdown hook 有几个优点。他们是:
在本教程中,我们通过定义了解 Java 中关闭钩子的概念,通过示例及其输出了解 Java 中关闭钩子的工作原理。
以上是Java 关闭挂钩的详细内容。更多信息请关注PHP中文网其他相关文章!