实战 - Java程序最后的清道夫Runtime.addShutdowHook
做一个爱护环境,热爱资源的程序员,在使用应用程序后,记录及时释放资源,在阅读LTS源码时,发现了Runtime.addShutdownHook()的用法,稍微记录一下。使用该方法可以给当前JVM注册一个关闭挂勾线程,在程序退出时,会执行这个关闭挂勾线程,而这个时间点,最适合进行资源的释放工作。
以下直接看实例代码:
/** JVM虚拟器关闭挂勾:在JVM关闭时,触发执行:一般用于资源释放。* 在2种情况下,会执行关闭挂勾:* 1.程序退出,就是程序执行完成(最后一个非守护线程退出);* 2.执行了System.exit()方法,退出程序;* 注意:直接kill进程不会执行关闭挂勾的。* **/
public class AddShutDownHook {public static void main(String[] args) throws InterruptedException {System.out.println("主线程运行.....等我5s......");Thread.sleep(5000);//程序退出之前会执行关闭挂勾Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {@Overridepublic void run() {System.out.println("别着急关闭,等我先执行完。");}}));//System.exit(0); //也会执行关闭挂勾System.out.println("主线程运行完毕。");}}
实战 - Java程序最后的清道夫Runtime.addShutdowHook相关推荐
- 一个java程序_从另一个java程序运行java程序
我正在研究一个简单的java程序.它只是编译并执行另一个java程序.我正在使用Runtime.exec()函数进行编译和运行.编译没有问题.但是当它运行时,如果第二个程序需要输入来从键盘读取,我不能 ...
- java笔记_2020年java程序员、java工程师必备资料(内含java学习思维图、视频教程、源码笔记等)...
学java的程序猿们看过来 不谈虚的,直来干货. 教程介绍 1.适合零基础学员:从Java语言起源开始,循序渐进,知识点剖析细致且每章配备大量随堂练习 2.课程内容推陈出新:基于JDK 11,将Jav ...
- 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序
编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...
- Java程序员都30岁了,还剩下5年“寿命”,这就是所谓的中年危机?
Java程序员都30岁了,还剩下5年"寿命",这就是所谓的中年危机? 30岁时,我是一个程序员,离传说中的"退休"只有5年了,为了优雅从容的所谓"光荣 ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- java runtime是什么软件_Java SE Runtime Environment (JRE) 运行Java程序的必备软件
Java SE Runtime Environment 运行Java程序的必备软件 因JAVA高度的安全性以及跨平台的特性,使得稳居网络应用程序语言的首选,这也使用得越来越多的程序员选择了Java,这 ...
- Java程序员校招蚂蚁金服,微信抢红包实战案例,纯干货
开头 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一.因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统.内存.CPU.编程语言等多方面的基础能力,更为考验一 ...
- 开源即巅峰,《Java程序性能优化实战》GitHub三小时标星已超34k
蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员,可惜 ...
- 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行
一.CentOS 7 yum 安装与配置 JDK 参考:https://blog.csdn.net/github_38336924/article/details/82221258 1.检查是否已安装 ...
最新文章
- 小米盒子连接不上服务器显示wifi,小米盒子连接不上wifi的原因及解决办法
- MySQL之三范式:原子性 唯一性 避免数据冗余
- 实时计算 Flink 版总体介绍
- ubuntu11.10 64bits机器安装flash方法
- gradle入门_Gradle入门:简介
- 痛惜!年仅38岁,中科院研究员、博导周传不幸病逝!
- mysql数据库下载压缩包_mysql 8.0.22 zip压缩包版(免安装)下载、安装配置步骤详解...
- 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?
- cdp备份mysql数据库_数据库如何备份与恢复
- ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点
- 黑马程序员---交通灯管理系统
- pls-00302: 必须声明 组件_vue组件
- 数控加工仿真系统 - FANUC OI 车床编程笔记(粗略)
- 三星s9Android9内测申请链接,国行三星S9/S9+开启安卓9.0内测
- 工行银企互联接入详解(1)--流程说明
- 微信小程序 手写签名_你竟然还不知道在微信上就可以手写签名、签文件了~
- 腾讯官网生成qq在线客服代码
- 统计学中的P值与显著性的意义
- photoSwipe插件使用
- Linux下内核进程、用户进程和轻量级进程(LWP)的理解
热门文章
- 百度地图开发-检索功能
- 美容院为什么适合建立小程序?
- 【PSO三维路径规划】粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
- mapi java_[Security:090504]Certificate chain received from mapi.alipay.com
- 台式计算机怎么截屏,台式电脑,怎么截图全屏?
- 人体经络气血运行规律
- 人民币终于大幅度贬值说明什么
- Swarm管理分布式docker
- python井字棋代码_python井字棋算法及代码
- 如何使用浏览器对网络请求编辑重发(Edit and Resent) 以及: fetch API 中 ReadablleStream 的打印方法