Runtime.getRuntime().addShutdownHook(Thread hook)的使用

搬运机器人系列编程:KUKA KR QUANTEC_(2).KUKA KRL语言编程基础 定义一个函数END!调用函数PRINT "结果: ", result!定义一个过程PRINT msgEND!调用过程printMessage("欢迎使用 KUKA 机器人")!定义搬运零件的起始位置和目标位置!定义焊接路径的各个点!定义喷涂路径的各个点KUKA Robot Language (KRL) 是一种专门为工业机器人设计的编程语言,具有结构化编程、丰富的库函数、实时性以及集成性等特点。 阅读详情


需求:最近做了个后台运行的jar包应用,没有采用web容器,采用java -jar xxxxx的方式运行。数据库连接池采用c3p0,关闭应用后

发现数据库会话依然存在。

解决方案:采用Runtime.getRuntime().addShutdownHook(Thread hook)在应用关闭前关闭数据库连接,该方法适用于采用

System.exit(int)退出应用的方式。 因为jar包采用的是main方法启动(main方法是应用的入口和出口),因此直接将

Runtime.getRuntime().addShutdownHook(Thread hook)放在了main方法中。(Runtime 就是java.lang.Runtime).

因为我采用Guice管理数据源,所以下面通过Injector获取应用的DataSource。


代码:

import javax.sql.DataSource;
import com.google.inject.Injector;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ShutdownHookTest {
	
	private static Injector injector;
	
	static {
		// TODO initiate injector
		System.out.println("injector has been initiated.");
	}
	
	public static void main(String[] args) {		
		Runtime.getRuntime().addShutdownHook(new Thread(){
			@Override
			public void run() {
				DataSource ds = injector.getInstance(DataSource.class);
				((ComboPooledDataSource) ds).close();
				System.out.println("Successfully closed the dataSource.");
			}
		});		
	}
}



Python爬虫selenium验证-中文识别点选+图片验证码案例 环境对模型进行训练,参考:https://github.com/sml2h3/dddd_trainer。能识别,但是发现默认识别率有点低,想要提升识别率,可以搭建。截图每个字符,并基于ddddocr识别。根据坐标,在验证码上进行点击。 阅读详情

相关推荐

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文深入剖析了RTL8306MB交换芯片驱动开发中RMII接口的典型调试陷阱。通过一个工业网关项目的实战案例,揭示了因硬件原理图设计疏忽导致TX_EN与CRS_DV信号线错接,从而引发网络“哑火”的根本原因。文章详细展示了使用示波器从时钟、数据到控制信号的系统性排查方法,并总结了关键的设计警示与自查清单,为嵌入式网络开发中的软硬件协同调试提供了宝贵经验。

qqq44的博客 1029

导致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

逆向实战:从x-mini签名到RPC调用,Frida动态分析小红书加密协议

本文通过实战案例,详细拆解了小红书App的加密协议逆向分析过程。从识别x-mini签名等关键参数入手,结合静态分析与Frida动态Hook技术,追踪到核心的RPC调用入口,并最终封装成可独立调用的RPC函数,为安全研究和协议理解提供了完整的技术路径。

moss5的博客 1032

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

群晖NAS实战:从零部署Container Manager与Docker代理配置全攻略

本文详细介绍了在群晖NAS上从零部署Container Manager与配置Docker代理的完整流程。针对国内用户常见的镜像拉取问题,提供了图形化界面与SSH命令行两种解决方案,并分享了MySQL容器部署的实战案例。文章特别强调了网络配置技巧和日常维护方法,帮助用户高效管理NAS上的容器应用。

weixin_29254673的博客 1304

IEC104协议下的文件传输与软件升级的技术细节与操作流程

本文深入探讨IEC104协议下的文件传输过程和软件升级机制,揭示其背后的技术细节和操作流程。

2401_86189088的博客 2525

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

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

hq091117的博客 814

DeepSeek-R1模型+Dify实战:5步打造能读PDF的智能客服(附BGE-M3嵌入模型配置)

本文详细介绍了如何利用DeepSeek-R1大模型与Dify平台,结合BGE-M3嵌入模型,构建企业级智能文档问答系统。通过5个步骤,从环境准备到知识库构建,再到智能问答应用开发,帮助企业快速从PDF等文档中提取关键信息,提升工作效率。特别适合处理产品手册、内部规程等专业内容。

convnet3designer的博客 720

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

RunTime.getRunTime().addShutdownHook

思考、总结、专注 891

2025年一篇解决Windows11安装医学图像处理工具-FSL(各种问题解决,过程详细,小白轻松安装)

2025年一篇帮你解决FSl安装所有问题,包括环境安装、使用说明、常见问题,过程简单易懂,小白轻松安装。

weixin_52145255的博客 2524

【2025CSPJ普及组】T4. 多边形

【2025CSPJ普及组】T4. 多边形【题目描述】小 R 喜欢玩小木棍。小 R 有 n 根小木棍,第i(1≤i≤n) 根小木棍的长度为 ai。

lybc2019的博客 849

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

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

清泉影月 2160

基于Python的雪球网投资组合数据爬取与分析实战:从入门到精通

在当今数字化投资时代,数据已成为投资者最重要的资产之一。雪球网作为中国领先的投资社交平台,汇聚了大量优质的投资组合数据,这些数据对于量化投资研究和个人投资决策具有重要价值。本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的雪球网投资组合爬虫,并深入分析获取的数据。投资组合持仓明细及变动历史投资收益率曲线与风险指标投资者操作策略与调仓频率热门行业与个股关注度。

2201_76125261的博客 920

使用Runtime实例调用addShutdownHook(Thread hook)的研究

首先Runtime.getRuntime().addShutdownHook(Thread hook)函数的功能是什么??? java虚拟机会对两种类型的事件作出响应,进行关闭。 exit(),或者System.exit()方法被调用。 对用户在系统层次作出的关闭指令进行关闭操作。 上图是hook参数的官方说明。 在我们的项目中,hook就是下面这样的一个Exitor内部静态类的...

Achang的博客 547

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

为您的Java应用程序添加退出事件处理

对于简单的应用系统,我们直接可以在System.exit(0)代码执行前,添加需要在应用程序退出前需要完成的工作,如:关闭网络连接,关闭数据库连接等。然而,对于比较复杂的多线程应用,线程运行的状态较复杂,我们就很难预料程序何时结束,如何能在应用程序结束事件到来时,处理我们要做的工作呢?这就用到了Java对应用程序的退出的事件出处理机制。对当前应用程序对象的获得,Java通过Runtime静态方法:

zl198183的专栏 789

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

为Java应用程序添加退出事件响应

  一个完整的Java应用程序,通常至少要有一个应用程序的结束点。对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让程序自然运行到结束。   如:下列典型代码package untitled14;/*** This application is to demo how an app...

36

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

疯子阳1991 4443

RunTime.getRunTime().addShutdownHook的用法

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

weixin_39098944的博客 2796

RunTime.getRunTime().addShutdownHook用法

转:https://blog.csdn.net/gongxinju/article/details/69963099 google了一下它的含义:在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。 在了解关闭钩子之前,首...

musi_m的博客 1277

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

RunTime.getRunTime().addShutdownHook()用法

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

至道 2485

RunTime.getRunTime().addShutdownHook

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

316

Runtime.getRuntime().addShutdownHook

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

JessieLee_YoYo的专栏 2395

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

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

小工匠 2万+

runtime.getruntime().addshutdownhook

void java.lang.Runtime.addShutdownHook(Thread hook) 该方法用来在jvm中增加一个关闭的钩子。当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程。其中shutdownHook是一个已初始化但并不有启动的线程,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHoo

Iccmo的博客 824

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

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

AllenMr_Z的博客 775
上一篇: FileChangedReloadingStrategy的简单使用
下一篇: 常用Maven仓库和仓库管理器
walker-undef
博客等级 码龄12年 93粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值