`
mabusyao
  • 浏览: 252591 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

如何在关闭时进行清理工作

阅读更多
我们常常会遇到这样的情况,当程序运行结束的时候,要将一些资源连接进行清理,释放内存,或者是删除一些临时文件。通常这并不会有什么问题,我们只需要在程序的结束部分写上清理代码即可。

但当我们处在多线程的环境下时,我们并不能确切的知道,何时所有的线程都已结束工作,程序准备退出。 又或者我们的程序中有一些守护线程,需要通过特殊的命令才能停止。那么此时,我们如何才能保证当所有的线程都结束,程序退出的时候,我们的清理代码被执行呢?

在Java中,有一种非常简单的方法,通过给Runtime提供shutdown hook来实现这样的需求:

        try {
            // Register shutdown hook
            if (useShutdownHook) {
                if (shutdownHook == null) {
                    shutdownHook = new CatalinaShutdownHook();
                }
                Runtime.getRuntime().addShutdownHook(shutdownHook);
            }
        } catch (Throwable t) {
                //TODO
        }

分享到:
评论

相关推荐

    Excel-VBA宏编程实例源代码-禁止使用“关闭”按钮关闭工作簿.zip

    这种编程技巧可以用于各种场景,比如保护未保存的数据、强制用户完成特定步骤或者在关闭前执行一些清理工作。然而,需要注意的是,过度使用或滥用这样的功能可能会给用户带来不便,因此在设计这类功能时,应确保有...

    关闭窗口时自动关闭窗口时自动

    标题中的“关闭窗口时自动”可能是指在操作系统或应用程序中设置的一种功能,即当用户关闭一个窗口时,程序会自动执行特定的操作,比如保存数据、退出程序或执行其他关闭相关的任务。这一特性常见于各种软件中,以...

    使窗口打开时时保持上次关闭时的大小

    此外,为了确保窗口不会超出屏幕范围,你可能还需要在设置窗口大小和位置时进行一些边界检查。例如,确保窗口的左上角坐标位于屏幕内,窗口的右下角坐标不会超出屏幕。 以上就是在VC++环境下,使窗口再次打开时保持...

    JavaFX 监听窗口关闭事件实例详解

    JavaFX是Oracle公司推出的一个用于构建富客户端应用程序的...在实际开发中,开发者需要在事件处理器中添加合适的逻辑来确保应用程序能够在退出时执行所有必要的清理工作,从而避免可能的资源泄漏或者数据不一致等问题。

    快速解决pyqt5窗体关闭后子线程不同时退出的问题

    用pyqt5设计了一个主窗体,在窗体运行时需要把一个无限循环放在一个线程去工作。运行后,发现通过鼠标按主窗体的关闭按键关闭主创体后,线程不会自动终止,依然在运行。尽管对我的使用场景来说,这不是问题,因为...

    自动关闭端口+服务优化+清理

    最后,清理工作主要是针对系统垃圾文件、无效注册表项、临时文件等进行的。这些杂物会随着时间推移逐渐积累,占用硬盘空间,甚至可能影响系统稳定性。定期清理能释放存储空间,提高系统响应速度,同时也有助于保持...

    word关闭时遇到问题需要关闭

    在日常工作中,Microsoft Office Word 用户可能会遇到一个常见的错误提示:“Microsoft Office Word 遇到问题需要关闭”。这个提示通常伴随着程序的异常终止,给用户带来不便。本文旨在深入探讨这一问题的成因与解决...

    Excel-VBA宏编程实例源代码-工作簿被关闭时,关闭之前执行代码.zip

    这个压缩包"Excel-VBA宏编程实例源代码-工作簿被关闭时,关闭之前执行代码.zip"包含了一个具体的例子,演示了如何在Excel工作簿关闭前执行特定的代码。下面我们将深入探讨VBA宏编程的相关知识点。 首先,VBA宏是...

    易语言检测窗口关闭异常

    例如,我们可以利用`窗口消息`函数来监听窗口关闭消息(WM_CLOSE),并在接收到该消息时执行相应的清理工作,防止资源泄露。同时,还可以使用`异常处理`结构来捕获并处理可能出现的异常。 下面是一段简单的易语言...

    判断浏览器是刷新还是关闭窗口

    由于其触发时机的特殊性,`onunload` 常被用来执行一些清理工作,如清除定时器、保存用户数据等。 **注意**:`onunload` 事件并不支持取消默认行为或阻止事件冒泡,因此对于一些需要交互反馈的操作(如弹出确认...

    P330i证卡机清洁保养说明

    - **关闭电源**:在进行任何清洁保养工作之前,请先关闭打印机电源,并拔掉电源线。 - **环境准备**:选择一个干净、无尘的工作区域来进行清洁工作,确保不会引入新的灰尘或杂质。 - **工具准备**:准备所需的清洁...

    VB 16种关闭窗口

    在VB(Visual Basic)编程中,关闭窗口是一个常见的操作,特别是在开发用户界面应用程序时。这里,我们将详细探讨16种不同的方法来关闭VB中的窗口,这些方法可以根据具体的应用场景和需求选择使用。 1. **Form.Hide...

    线程关闭javacv关闭20190508.rar

    在这个“线程关闭javacv关闭20190508.rar”项目中,我们主要关注的是如何正确地开启和关闭线程,以及利用JavaCV进行推流和停止推流的操作。 首先,让我们深入理解多线程在JavaCV中的应用。在Java中,线程是程序执行...

    C# winfrom在关闭窗体后加载新的数据

    2. **FormClosing事件**:这个事件在窗体开始关闭但尚未完成关闭之前触发,是执行清理工作或询问用户是否确认关闭的好时机。例如,如果需要在关闭窗体前保存用户的数据或者更新后台数据,可以在`FormClosing`事件...

    MFC 强制关闭指定进程 强制关闭指定窗口

    在某些情况下,开发者可能需要强制关闭特定的进程或窗口,比如进行错误处理、资源释放或者测试目的。本文将详细讨论如何在MFC应用程序中实现这一功能。 首先,我们要理解进程和窗口的概念。一个进程是运行中的程序...

    c#CEXCEL关闭(解决无法关闭进程的问题)

    在使用C#编程时,有时我们需要操作Excel进行数据读写,但操作完成后,可能会遇到Excel进程无法正常关闭的问题。这通常是因为程序没有正确地释放Excel应用程序实例或工作簿对象,导致进程仍然在后台运行。本篇文章将...

    ShowDialog()的超简单的关闭用法

    当用户点击这个按钮时,窗体会触发`FormClosing`或`FormClosed`事件,此时你可以在此事件处理程序中添加任何必要的清理代码。窗体会自动关闭,无需额外代码。 2. **代码关闭**:如果你需要在特定条件下关闭窗体,...

    Excel-VBA宏编程实例源代码-当窗口关闭时执行代码.zip

    在这个例子中,当用户尝试关闭工作簿时,VBA会显示一个消息框通知用户工作簿已被关闭。`Cancel`参数用于决定是否应该取消关闭操作。如果`Cancel = True`,则关闭操作会被取消;如果`Cancel = False`或者没有设置此...

    易语言主副窗口关闭操作源码

    对于主窗口的关闭,开发者通常会在窗口的“关闭”事件中编写代码,确保程序在窗口关闭时进行必要的清理工作,如保存数据、释放资源等。同时,还需要处理用户强制关闭程序的情况,以防止数据丢失或程序异常。 副窗口...

    C#彻底关闭Excel进程excel.exe

    在IT行业中,尤其是在进行自动化处理或者程序开发时,有时我们需要操作Excel文件,比如读取、写入数据。然而,操作完成后,如果不正确地关闭Excel进程,可能会导致文件被占用,影响其他程序的运行。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics