a841796685 2019-04-01 10:33 采纳率: 0%
浏览 933

activity 工作流 定时器节点执行逻辑

1、定时器节点设置的每天9:30执行
2、周六整天服务器关停
3、周天下午服务器启动,定时器节点默认执行了一次
问:为什么在系统启动时,未在定时器执行时间,定时器节点也会执行,此处的逻辑是什么!
求解,谢谢!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 16:54
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题的答案在于Java的时间处理机制和线程模型。Java使用了基于事件驱动的多线程模型,其中主线程负责处理用户输入和其他外部事件,而其他线程(如操作系统线程)则用于处理各种内部任务。

    当您创建一个定时器节点并指定它在每天9:30执行时,实际上是在为这个节点分配了一个线程来处理定时任务。在这个线程中,如果服务器在9:30关闭,那么这个线程将被阻塞,并等待一段时间后重新开始工作。因此,在9:30之前或之后的任何时间点,只要服务器没有关闭,这个定时器节点就会立即开始运行其定时任务。

    关于周六和周日的情况,这取决于您的系统如何管理这些日期。如果它们被视为工作日的一部分,则上述情况仍然会发生。然而,如果您想让定时器节点在周末期间停止运行,那么您需要确保在创建定时器节点时将其设置为“非活动”状态,而不是简单地将其设置为“每天”。这样,只有在服务器打开且系统处于正常运行模式下时,定时器节点才会被执行。

    至于为什么在系统启动时,未在定时器执行时间,定时器节点也会执行,这是因为Java的多线程模型允许多个线程同时执行任务。即使一个线程因为某种原因被阻塞,另一个线程仍然可以继续执行它的任务。所以即使在系统启动时,只要有空闲时间,就会有新的线程被调度执行,包括定时器节点的任务。

    评论

报告相同问题?