3

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

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

  • 这些方法如何执行?并行还是先后?如果连续,那么如何重新配置​​以并行工作?
  • 这个配置是多线程的(对于每种方法)还是不是(如果不是 - 再次,如何改变它)?
4

1 回答 1

4

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

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

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

于 2016-04-29T05:16:04.517 回答