runtime.getruntime().addshutdownhook

Runtime.getRuntime().addShutdownHook简介 前言: 在使用线程池的时候,偶然看到了前人的代码里出现了Runtime.getRuntime().addShutdownHook()。 作用: jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。 使用场景: 多用于内存清理,对象销毁等等。 示例: 以线程池在进程关闭时的处理。 上代码: private static Sche 阅读详情

void java.lang.Runtime.addShutdownHook(Thread hook)
该方法用来在jvm中增加一个关闭的钩子。当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程。其中shutdownHook是一个已初始化但并不有启动的线程,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以可通过这些钩子在jvm关闭的时候进行内存清理、资源回收等工作

public static void main(String[] args) {
        Runtime.getRuntime().addShutdownHook(new Thread(){
            public void run() {
                try {
                    LOGGER.info("shutdownhook start..." + new Date());
                    Thread.currentThread().sleep(5000);
                    LOGGER.info("shutdownhook end..." + new Date());
                } catch (Exception e){
                    e.printStackTrace();
                }
            }
        });
        System.exit(1);
    }

2017-05-03 10:28:06.364 INFO 38904 — [ Thread-6] c.iccmo.flow.gateway.GatewayApplication : shutdownhook start…Wed May 03 10:28:06 CST 2017
2017-05-03 10:28:06.364 INFO 38904 — [ Thread-5] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@a9cd3b1: startup date [Wed May 03 10:28:01 CST 2017]; root of context hierarchy
2017-05-03 10:28:06.369 INFO 38904 — [ Thread-5] s.b.a.d.e.ElasticsearchAutoConfiguration : Closing Elasticsearch client
2017-05-03 10:28:06.369 INFO 38904 — [ Thread-5] org.elasticsearch.node : [Brain-Child] stopping …
2017-05-03 10:28:06.371 INFO 38904 — [ Thread-5] org.elasticsearch.node : [Brain-Child] stopped
2017-05-03 10:28:06.371 INFO 38904 — [ Thread-5] org.elasticsearch.node : [Brain-Child] closing …
2017-05-03 10:28:06.374 INFO 38904 — [ Thread-5] org.elasticsearch.node : [Brain-Child] closed
2017-05-03 10:28:06.375 INFO 38904 — [ Thread-5] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
2017-05-03 10:28:11.366 INFO 38904 — [ Thread-6] c.iccmo.flow.gateway.GatewayApplication : shutdownhook end…Wed May 03 10:28:11 CST 2017

robomimic实验复现全流程指南:从数据集下载到训练视频生成 本文提供了RoboMimic实验复现的完整实战指南,重点解析了从数据集下载、配置文件定制到模型训练与评估的全流程。以tool_hang任务为例,详细说明了环境准备、数据获取、训练监控及视频生成等关键步骤,并针对常见问题给出了排查方案,帮助研究者高效完成机器人模仿学习实验的闭环验证。 阅读详情

相关推荐

Unity-Chan Toon Shader卡通渲染学习

2.0 (UTS2)是一款用于图像和视频的卡通着色器,旨在满足从事卡通着色 3DCG 动画的创作者的需求。二、从0-1复刻UTS21.漫反射UTS2的漫反射部分主要有三个层组成,分别是基本颜色、第一阴影色和第二阴影色,分别对应着美术理论中的白、灰、黑。

qq_63133691的博客 2539

导致Runtime.getRuntime().addShutdownHook无法执行的场景

PS:搜索了一下windows中的结束任务和linux中kill -9的区别,14个AI大模型的回答都是一致的:linux中的kill -9比windows任务管理器中的结束任务要更凶更猛,虽然没有在linux系统去实验,但是根据这个结论,如果在linux系统使用kill -9命令来杀死jvm,那么钩子函数就不会执行了。2、在oom之后注册钩子函数:-Xmx10000k,无法执行。1、在OOM之前注册钩子函数:-Xmx10000k,正常执行。4、任务管理器结束运行:没能执行。

qq_17805707的博客 896

Simulink封装与库的建立

第二栏设置标签,第三栏是对应变量名,即是第一张图中的常量名。1.先将输入与常量模块相连接并生成子系统。按照如图所示添加修改,最后的效果如下图。封装子系统搭建测试环境。

lensyu1994的博客 1741

Runtime.getRuntime().addShutdownHook(new Thread())用法

首先说明这个Runtime.getRuntime().addShutdownHook(new Thread())方法是用来捕捉程序退出的时刻,在程序退出的时候处理必要的退出准备,如关闭网路,关闭文件等。 那对于我们来讲,我们平时是怎么退出程序的,正常来讲是让程序正常退出,或者执行System.exit(0)来结束程序,我们来演示一下: package runtimetest; public class Test { public static void main(String[] args.

@@老胡的博客 2579

手把手教你用OPA运放和MOS管搭建恒流源电路(附完整电路图)

本文详细介绍了如何使用OPA运放和MOS管搭建高精度恒流源电路,涵盖核心元器件选型、电路设计、工作原理及实际搭建步骤。通过负反馈控制机制和MOS管工作区设置技巧,实现稳定的电流输出,适用于LED驱动、电池充电等场景。附完整电路图和调试技巧,助您快速掌握恒流源设计。

weixin_29239279的博客 535

【信号与系统实战解析】—— 拉普拉斯变换在电路分析中的关键应用

本文深入解析了拉普拉斯变换在电路分析中的关键应用。通过将时域微分方程转换为复频域的代数方程,系统化处理初始条件,并利用零极点图分析电路稳定性与频率响应。文章以RLC串联电路为例,详细演示了s域建模、性质运用及综合分析方法,为工程师提供了分析动态电路的强大工具与清晰视角。

weixin_29093017的博客 174

高并发编程-Runtime.getRuntime().addShutdownHook为自己的应用添加hook

文章目录概述使用场景注意事项示例 概述 一句话概括就是: ShutdownHook允许开发人员在JVM关闭时执行相关的代码。 我们可以使用java.lang.Runtime.getRuntime().addShutdownHook(Thread t)方法在JVM中添加关闭钩子。 使用场景 1.程序正常退出 , JVM关闭 2. 调用System.exit ,JVM关闭 3. 程序抛出异常,导致...

小工匠 2万+

【Cadence软件技巧集萃】从Capture到Allergo——分布演示从原理符号导出到网络表

Cadence软件功能多样、性能强大,但是使用起来颇费步骤,尤其是从原理图到网络表的导入步骤,没有经过上手实践还真不一定一次就能搞定哩。本文笔者用将分步演示:1、在Capture软件上绘制原理图;2、将原理图导出网络表;3、在Allergo软件上更新网络表;希望给予使用Cadence的读者有效的帮助1、本文简述了建立Capture项目的步骤,演示了调用元件符号库的方法,并绘制了电气原理图;2、针对加载元件封装库可能遇到的问题,做了排查步骤建议;

qq_33175704的博客 2534

Runtime.getRuntime().addShutdownHook(new Thread())

最近在跟着一个大神专栏在学习手敲spring,看到这个Runtime.getRuntime().addShutdownHook 以前还真不知道,记录下来。 百度知识点原文:https://www.cnblogs.com/shihaiming/p/11398371.html 钩子函数:Runtime.getRuntime().addShutdownHook, 作用:当我们程序在运行完之后,如果需要做清理内存,清理线程,或者做业务上的清理工作的话,就可以用这个钩子函数。 执行时间:jvm关闭前 其中

hq091117的博客 814

C#串口通信从入门到精通(1)——硬件接线

RS-232接口一般都是9针的,有公母头(针头和孔头),为了便有理解以下都称为针头和孔头,针头就是露出来的针,孔头就是9个孔,总共使用3条线进行通信,一条用于发送,一条用于接收,另外一根是GND地线,由于线路的功能是永久性的,设置连接时,必须确保一个节点的发送线与另一个节点的接收线相连,反之亦然,RxD(PC的接收线)连接到TxD(传感器电子设备的发送线),TxD(PC的发送线)连接到RxD(传感器电子设备的发送线)。两条线路的电平都是相对于GND的。因此,GND也必须连接,但不能将GND与屏蔽连接。

qq_34059233的博客 1万+

ceph recovery 相关参数

可以修改的最大回填/恢复选项列在 “恢复/回填选项” 部分。mClock 的修改 默认回填/恢复限制由 osd_mclock_override_recovery_settings 选项,设置为 默认为 false。尝试修改任何默认恢复/回填限制而不设置门控选项,会将该选项重置为 mClock 默认值,并在集群日志中记录一条警告消息。请注意,默认值可能需要几秒钟才能恢复生效。请使用 config show 命令验证限制,如下所示。就直接设置以下参数,过一会就变回了默认值。简单点说官网的意思就是不设置。

weixin_40548182的博客 278

RunTime.getRunTime().addShutdownHook的用法

前言 有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源. RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个线程依然要自己写. 利用这个性质,如果我们之前定义了一系列的线程池供程序本身使用,那么就可以在这个最后执行的线程中把这些线程池优雅的关闭掉. 案例 比如我们定义了一个线程池 private ExecutorService streamThreadPool = Executors.newFixedThre

weixin_39098944的博客 2796

【VS Code插件开发】通用功能(二)

本篇主要从command(命令)、menus(菜单)、快捷键三个方面讲解,都归于通用功能。

编码世界 1万+

Runtime.getRuntime().addShutdownHook(new Thread()

为您的Java应用程序添加退出事件处理 -------------------------------------------------------------------------------- 一个完整的Java应用程序,通常至少要有一个应用程序的结束点。对于一般程序来说,系统开发者根据需要和个人的偏好,会 在程序结束位置,通过添加System.exit(0),或System.out

疯子阳1991 4443

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Runtime.getRuntime().addShutdownHook使用

转载: http://blog.csdn.net/wgw335363240/archive/2010/08/31/5854402.aspx Runtime.getRuntime().addShutdownHook(shutdownHook);    这个方法的含义说明:     这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addS

xiaozhu0301的博客 530

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RunTime.getRunTime().addShutdownHook用法

在实现Log4j自动发送邮件这个功能的时候,遇到一个问题:有些情况下,我们不需要实时监控日志邮件,需要利用缓存分批发送邮件。 我就重写了SMTPAppender类,这样另外一个问题也随之产生了,当程序结束时,还在缓冲里面的事件是不会被发送出来的,因为事件数往往没有bufferSize的一半。 为了解决问题,在构造函数中加了一段代码: public DefineSMTPAppender() {

殷建卫 1110

RunTime.getRunTime().addShutdownHook

看源码看到,Runtime.getRuntime().addShutdownHook(shutdownHook); google了一下它的含义:在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。 ...

316

Java如何使用Runtime.getRuntime().addShutdownHook

通过这个方法,你可以添加一个或多个“关闭钩子”(shutdown hook),这些钩子是线程,它们将在 JVM 关闭时被启动。JVM 在以下情况下会启动关闭序列:程序正常退出(System.exit),用户中断(如按下 Ctrl+C),系统关闭,Runtime.getRuntime().halt(0) 方法的调用,或者最后一个非守护线程退出。关闭钩子最常见的用途之一是确保在应用程序意外停止时进行必要的资源清理,比如关闭文件句柄、数据库连接等,以防止资源泄露。

AllenMr_Z的博客 775

Runtime.getRuntime().addShutdownHook自我总结

背景 在某个业务场景下,看到了同事写的代码 Runtime.getRuntime().addShutdownHook(thread) 用以控制socket以及其他资源的关闭,但是当时他的代码是写入while(true)循环中,所以导致一时无法分清这个勾子是在每次循环结束时执行,还是最后程序被关闭执行,闹了个笑话。 前言 Runtime.getRuntime().addShutdownHook(thread)中的thread只会在jvm结束时运行,与循环无关。 正常停止代码 public class Shut

qq_43479628的博客 365

使用RunTime.getRunTime().addShutdownHook优雅关闭线程池

有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源. RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程. 当然这个线程依然要自己写. 利用这个性质,如果我们之前定义了一系列的线程池供程序本身使用,那么就可以在这个最后执行的线程中把这些线程池优雅的关闭掉. 比如我们定义了一个线程池 privat...

悟鸣的技术博客 1222

java:Runtime.getRuntime().addShutdownHook 捕获代码被结束时异常

问题描述: 代码有时候被杀掉,但是杀掉的时候需要去执行一些必要的操作,例如保存文件,java 提供了相应的方法 Runtime.getRuntime().addShutdownHook 。 1.贴一个例子 public class GetRunKill { public static void main(String[] args) { Runtime runtime =...

清泉影月 2160

RunTime.getRunTime().addShutdownHook优雅关闭线程池

有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源. RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个线程依然要自己写. 利用这个性质,如果我们之前定义了一系列的线程池供程序本身使用,那么就可以在这个最后执行的线程中把这些线程池优雅的关闭掉. 比如我们定义了一个线程池 private Exe...

ccllcaochong1的博客 252

Runtime.getRuntime().addShutdownHook()

解决 the application appears to have started a thread ... but failed to stop it,this is very likely to create a memory leak.这个警告 RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个线程依然要自己写. 有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源. 利用这个性质,如果我们之前定义.

请叫我大师兄 1523

Java的RunTime.getRunTime().addShutdownHook的用法

RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.

shadow_zed的博客 965

Runtime.getRuntime().addShutdownHook

addShutdownHook()是一个终止处理的方法,这个方法会在Java执行环境全部结束时(调用System.exit方法时,或者所有非守护线程都结束时),调用指定线程的start方法(这时候该线程称为shutdown hook),使用该方法可以编写整个程序的终止处理。 示例1:public class AddShutdownHookTest { public static v

JessieLee_YoYo的专栏 2395
上一篇: ThinkPHP源码阅读笔记(1)-入口文件
下一篇: IDEA常用快捷键
Iccmo
博客等级 码龄11年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值