做一个爱护环境,热爱资源的程序员,在使用应用程序后,记录及时释放资源,在阅读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相关推荐

  1. 一个java程序_从另一个java程序运行java程序

    我正在研究一个简单的java程序.它只是编译并执行另一个java程序.我正在使用Runtime.exec()函数进行编译和运行.编译没有问题.但是当它运行时,如果第二个程序需要输入来从键盘读取,我不能 ...

  2. java笔记_2020年java程序员、java工程师必备资料(内含java学习思维图、视频教程、源码笔记等)...

    学java的程序猿们看过来 不谈虚的,直来干货. 教程介绍 1.适合零基础学员:从Java语言起源开始,循序渐进,知识点剖析细致且每章配备大量随堂练习 2.课程内容推陈出新:基于JDK 11,将Jav ...

  3. 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序

    编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...

  4. Java程序员都30岁了,还剩下5年“寿命”,这就是所谓的中年危机?

    Java程序员都30岁了,还剩下5年"寿命",这就是所谓的中年危机? 30岁时,我是一个程序员,离传说中的"退休"只有5年了,为了优雅从容的所谓"光荣 ...

  5. 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...

  6. java runtime是什么软件_Java SE Runtime Environment (JRE) 运行Java程序的必备软件

    Java SE Runtime Environment 运行Java程序的必备软件 因JAVA高度的安全性以及跨平台的特性,使得稳居网络应用程序语言的首选,这也使用得越来越多的程序员选择了Java,这 ...

  7. Java程序员校招蚂蚁金服,微信抢红包实战案例,纯干货

    开头 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一.因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统.内存.CPU.编程语言等多方面的基础能力,更为考验一 ...

  8. 开源即巅峰,《Java程序性能优化实战》GitHub三小时标星已超34k

    蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员,可惜 ...

  9. 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行

    一.CentOS 7 yum 安装与配置 JDK 参考:https://blog.csdn.net/github_38336924/article/details/82221258 1.检查是否已安装 ...

最新文章

  1. 小米盒子连接不上服务器显示wifi,小米盒子连接不上wifi的原因及解决办法
  2. MySQL之三范式:原子性 唯一性 避免数据冗余
  3. 实时计算 Flink 版总体介绍
  4. ubuntu11.10 64bits机器安装flash方法
  5. gradle入门_Gradle入门:简介
  6. 痛惜!年仅38岁,中科院研究员、博导周传不幸病逝!
  7. mysql数据库下载压缩包_mysql 8.0.22 zip压缩包版(免安装)下载、安装配置步骤详解...
  8. 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?
  9. cdp备份mysql数据库_数据库如何备份与恢复
  10. ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点
  11. 黑马程序员---交通灯管理系统
  12. pls-00302: 必须声明 组件_vue组件
  13. 数控加工仿真系统 - FANUC OI 车床编程笔记(粗略)
  14. 三星s9Android9内测申请链接,国行三星S9/S9+开启安卓9.0内测
  15. 工行银企互联接入详解(1)--流程说明
  16. 微信小程序 手写签名_你竟然还不知道在微信上就可以手写签名、签文件了~
  17. 腾讯官网生成qq在线客服代码
  18. 统计学中的P值与显著性的意义
  19. photoSwipe插件使用
  20. Linux下内核进程、用户进程和轻量级进程(LWP)的理解

热门文章

  1. 百度地图开发-检索功能
  2. 美容院为什么适合建立小程序?
  3. 【PSO三维路径规划】粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
  4. mapi java_[Security:090504]Certificate chain received from mapi.alipay.com
  5. 台式计算机怎么截屏,台式电脑,怎么截图全屏?
  6. 人体经络气血运行规律
  7. 人民币终于大幅度贬值说明什么
  8. Swarm管理分布式docker
  9. python井字棋代码_python井字棋算法及代码
  10. 如何使用浏览器对网络请求编辑重发(Edit and Resent) 以及: fetch API 中 ReadablleStream 的打印方法