2017-05-25 45 views
0

我有下面的XML配置中定義:如果定義了多個,Spring @Async如何選擇任務執行程序/調度程序?

<task:scheduler id="myScheduler" pool-size="10" /> 
<bean id="asyncExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/> 
<bean id="asyncExecutor2" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/> 

當使用在Spring中@Async註釋,它是如何知道使用這些執行者/調度的?我希望它會在啓動時拋出一個錯誤,因爲這裏有多個,我沒有包含<task:annotation-driven executor="xxx"/>標記,但它似乎工作正常。有什麼方法可以在哪個地方登錄哪個地方正在使用?

+0

是可以在裏面記錄用於檢測線程名稱的@Async方法 – Zico

+0

當我登錄Thread.currentThread()。getName()時,它只顯示SimpleAsyncTaskExecutor-1,每次調用的次數增加一次。 –

回答

0

...

<task:annotation-driven executor="asyncExecutor" /> 
<task:executor id="asyncExecutor" pool-size="10" /> 

...

你可以看看線程名稱的堆棧跟蹤調試時,它應該是這樣開始:[asyncExecutor-xx]

+0

當我登錄'Thread.currentThread()。getName()'時,它只顯示'SimpleAsyncTaskExecutor-1',每次調用的次數增加一次。 另外,我宣佈我的任務執行程序是這樣的,這是錯誤的: '' 而不是使用''?這兩個聲明有什麼不同? –

+0

它不應該是錯的,是一個有助於bean配置的名稱空間,只需要使用就可以實現,只是需要更明確的配置。 – ootero

相關問題