编程语言
首页 > 编程语言> > java-Spring的@Scheduled注释如何工作?

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

作者:互联网

在我的应用程序中,我在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"
    }
}

在应用程序applicationContext中有以下几行:

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

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

>这些方法如何执行?并行还是连续?如果是连续的,那么如何将其重新配置为并行工作?
>该配置是否是多线程的(针对每个方法)(如果不是,则再次如何更改它)?

解决方法:

它在后台使用java Executor api.
您需要了解的所有内容都可以在documentation中找到

您基本上可以选择TaskExecutor实现,然后设置所需的处理线程数.

在您的示例中,这3种方法将以5秒的固定延迟连续执行.但是,如果仅定义一个处理线程,而一个方法花费很长时间,则其他两个方法的执行将被推迟.
如果您不想依赖于@Scheduled执行的其他功能,则在此示例中需要3个处理线程.

标签:spring-scheduled,spring,java
来源: https://codeday.me/bug/20191027/1941727.html