{"id":468,"date":"2019-06-04T02:33:11","date_gmt":"2019-06-04T02:33:11","guid":{"rendered":"http:\/\/emacslisp.com\/?p=468"},"modified":"2019-06-04T02:33:11","modified_gmt":"2019-06-04T02:33:11","slug":"java-runtime-getruntime-addshutdownhook","status":"publish","type":"post","link":"http:\/\/emacslisp.com\/?p=468","title":{"rendered":"Java &#8211; Runtime.getRuntime().addShutdownHook()"},"content":{"rendered":"<p>a useful method when program done and run last step task.<\/p>\n<pre lang=\"java\" line=\"1\">\r\n\r\n\r\npublic class AddShutdownHookTest {\r\n\r\n\tstatic class Message extends Thread {\r\n\r\n\t\tpublic void run() {\r\n\t\t\tSystem.out.println(\"Bye.\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void main(String[] args) {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t\ttry {\r\n\r\n\t\t\t\/\/ register Message as shutdown hook\r\n\t\t\tRuntime.getRuntime().addShutdownHook(new Message());\r\n\r\n\t\t\t\/\/ print the state of the program\r\n\t\t\tSystem.out.println(\"Program is starting...\");\r\n\r\n\t\t\t\/\/ cause thread to sleep for 3 seconds\r\n\t\t\tSystem.out.println(\"Waiting for 3 seconds...\");\r\n\t\t\tThread.sleep(3000);\r\n\r\n\t\t\t\/\/ print that the program is closing\r\n\t\t\tSystem.out.println(\"Program is closing...\");\r\n\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>a useful method when program done and run last step task. public class AddShutdownHookTest { static class Message extends Thread { public void run() { System.out.println(&#8220;Bye.&#8221;); } } public static void main(String[] args) { \/\/ TODO Auto-generated method stub try { \/\/ register Message as shutdown hook Runtime.getRuntime().addShutdownHook(new Message()); \/\/ print the state of the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-468","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=468"}],"version-history":[{"count":1,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/468\/revisions"}],"predecessor-version":[{"id":469,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/468\/revisions\/469"}],"wp:attachment":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=468"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}