gpt4 book ai didi

java - Spring 的@Scheduled 注解是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:05 25 4
gpt4 key购买 nike

在我的应用程序中,我在 3 个单独的类中有 3 个预定方法:

@Component
public class ClassA {
@Scheduled(fixedDelay = 5000L)
public void methodA(){
//do task "A"
}
}

@Component
public class ClassB {
@Scheduled(fixedDelay = 5000L)
public void methodB(){
//do task "B"
}
}

@Component
public class ClassF {
@Scheduled(fixedDelay = 5000L)
public void methodF(){
//do task "F"
}
}

在apps applicationContext中有这样几行:

<task:annotation-driven executor="myExecutor" scheduler="scheduler"/>
<task:executor id="myExecutor"/>
<task:scheduler id="scheduler"/>

我无法从日志文件中弄清楚,所以这是我的问题:

  • 这些方法是如何执行的?并行还是先后?如果连续进行,那么如何将其重新配置为并行工作?
  • 此配置是否是多线程的(针对每个方法)(如果不是,如何更改)?

最佳答案

它在后台使用 java Executor api。您需要知道的一切都可以在 documentation 中找到

您基本上选择一个 TaskExecutor 实现,然后设置您想要的处理线程数。

在您的示例中,这 3 个方法将以 5 秒的固定延迟连续执行。但是如果你只定义了1个处理线程,一个方法耗时很长,那么其他2个方法的执行就会被推迟。如果您不想依赖于使用 @Scheduled 执行的其他函数,则在此示例中您将需要 3 个处理线程。

关于java - Spring 的@Scheduled 注解是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com