【发布时间】:2020-04-05 16:33:33
【问题描述】:
我需要在 Java 中创建一个守护程序,它定期通过 HTTP 检索数据并将其存储在数据库中。
当主线程启动时,它从配置文件中读取数据源和轮询间隔,并为每个数据源创建一个具有适当间隔的TimerTask。此外,它调用Runtime.getRuntime().addShutdownHook() 添加一个关闭挂钩,该挂钩执行关闭前所需的任何清理。之后,主线程就无事可做。
该守护程序旨在用于经典 Unix 环境,即使用启动/停止脚本进行控制,但它应该可以移植到其他操作系统(例如,带有 SrvAny 的 Windows)。
我该怎么做呢?如果我只是让主线程退出,TimerTask 实例是否会保持 VM 运行,直到它们都被取消?如果没有,我将如何实现?
【问题讨论】: