2016-04-28 30 views
3

在我的應用我有3個獨立的3類計劃方法:Spring的@Scheduled註釋是如何工作的?

@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"/> 

我不能從日誌文件看着辦吧,這樣這裏是我的問題:

  • 這些方法如何執行?平行還是先後?如果相繼如此,它怎麼可以重新配置爲並行工作?
  • 這是confuguration多線程(每種方法)或不(如果不是 - 再次,它怎麼能被改變)?

回答

3

它在後臺使用java執行程序api。 你需要知道的一切可以在documentation

你基本上選擇一個TaskExecutor實現,然後設置你想要的處理線程數。

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

相關問題