V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
QWE321ASD
V2EX  ›  Java

咨询一下,非 springboot 项目,定时任务如何安全退出

  •  
  •   QWE321ASD · 2023-07-28 16:26:05 +08:00 · 1378 次点击
    这是一个创建于 512 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我做了一个定时上报数据的小程序,但是有托盘可以退出,我想让退出时进行一半的定时任务先完成了再退出,有什么好办法吗
    8 条回复    2023-07-31 10:14:04 +08:00
    nolog
        1
    nolog  
       2023-07-28 16:33:57 +08:00
    扩展 spring 的容器销毁声明周期的相关函数,或者捕获操作系统信号处理,或者扩展 JVM 销毁钩子函数
    securityCoding
        2
    securityCoding  
       2023-07-28 16:43:24 +08:00
    关键字 graceful shutdown 搜一下就有
    QWE321ASD
        3
    QWE321ASD  
    OP
       2023-07-28 17:09:57 +08:00
    @nolog
    @securityCoding 关键我不是 springboot 项目啊
    BQsummer
        4
    BQsummer  
       2023-07-28 18:41:43 +08:00
    jvm shutdown hook?
    ikas
        5
    ikas  
       2023-07-29 09:03:11 +08:00
    你托盘的退出,调用的方法,不是自己写的?
    securityCoding
        6
    securityCoding  
       2023-07-29 16:35:10 +08:00
    @securityCoding springboot 也不是 springboot 项目,点进去看下源码很难吗?
    QWE321ASD
        7
    QWE321ASD  
    OP
       2023-07-31 10:01:34 +08:00
    @nolog
    @BQsummer 周末试了一下 jvm hook 是正解
    QWE321ASD
        8
    QWE321ASD  
    OP
       2023-07-31 10:14:04 +08:00
    @ikas 托盘退出时可以设置固定延时等待,但是不能保证任务完成后才关呀.
    @securityCoding 问了 gpt4,graceful shutdown 不是依赖内置服务器自己的关闭能力吗,和我想达成的效果不一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2473 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:47 · PVG 10:47 · LAX 18:47 · JFK 21:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.