2

我有一个用例,其中我有一个带有 @Scheduled(fixedDelay = 1000) 的类在一个方法上(比如 run())。

我希望能够:

  1. 在运行时使用不同的 bean 名称启动此类(具有单例范围)的新实例。
  2. 在运行时选择性地终止实例(基于 bean 名称)。
  3. 暂停实例的执行(基于 bean 名称)。
  4. 恢复执行之前暂停的实例(基于 bean 名称)。

为了启动/终止这样的单例,我可以分别使用 BeanDefinitionRegistry 的 registerBeanDefinition 和 removeBeanDefinition 方法。

问题:

  1. registerBeanDefinition之后,注册的bean会运行@Scheduled注解标记的方法吗?
  2. removeBeanDefinition 之后,被移除的实例会停止执行带有@Scheduled 注解的方法吗?
  3. 暂停和恢复使用@Scheduled 注释标记的方法的最佳执行方式是什么。我总是可以公开一个将标志设置为 true 和忙等待暂停的方法,但是我可以使用容器提供的优雅方式或某些功能吗?
4

0 回答 0