簡體   English   中英

Spring的@Scheduled注釋如何工作?

[英]How does Spring's @Scheduled annotation work?

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

在app applicationContext中有這樣的行:

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

我無法從日志文件中找到它,所以這是我的問題:

  • 這些方法如何執行? 並行或相繼? 如果相繼,那么如何將其重新配置為並行工作?
  • 這種配置是多線程的(對於每種方法)是否(如果不是 - 再次,如何更改)?

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

您基本上選擇TaskExecutor實現,然后設置所需的處理線程數。

在您的示例中,將以5秒的固定延遲連續執行3種方法。 但是如果只定義一個處理線程,並且一個方法需要很長時間,那么其他兩個方法的執行將被推遲。 如果您不想依賴於使用@Scheduled執行的其他函數,則在此示例中需要3個處理線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM