在我的服務,我需要有ň上ň不同的目錄(ñ變爲1〜8)運行的東西,不同的線程。春@asynch線程併發共享資源
我需要執行ķ不同的任務(ķ進入爲1〜10000),每個任務被綁定到單個目錄,我需要在N1目錄執行K1任務只有當n1上沒有活動線程。
我是新來的春天,我想用@Async註釋,我已經不知道如何設置池在這種情況下。
for(int task = 1; task<=1000;task++){
executeAsynchMethod(directoryNumber);
}
executeAsynchMethod應保持空閒狀態,直到同一目錄中沒有其他任務。
UPDATE: 例如: 的executeAsynchMethod開始在每一個可用線程:
線程1 - >適用於目錄1
線程2 - >適用於目錄2
...
threadn - >適用於目錄ñ
只要線程完成工作,它就會「釋放」它的目錄,並且我希望在這個目錄上運行一個任務。
thread7 - > directory7是免費
thread7(或其他空閒線程) - >開始directory7新任務
你可以預先通過他們必須運行的目錄來分割任務,然後依次運行它們嗎? – jny
不可以,因爲任務可以有非常不同的執行時間(從10秒到10分鐘),並且我希望在整個執行過程中所有可能的線程都處於活動狀態。 我甚至不知道這是較長的任務:d – Jacopo
但是,如果有關於N1目錄X1的任務,執行時間將至少需要X1×持續時間,無論你做什麼。但是,如果一些其他的任務將花費更少的時間,'ThreadPool'將確保下一個任務將被釋放出來的任務得到執行。 – jny