我有任務:
@Scheduled(fixedDelayString = "3000")
public void test() {
System.out.println(Thread.currentThread().getName());
}
我想要這個任務的 3 個實體,我指定了 ThreadPoolTask??Executor 有 3 個池,但是我得到了 3 個等待其他任務執行的任務,如何在不等待其他任務的情況下并行運行它們?
uj5u.com熱心網友回復:
我現在能想到的唯一解決方案(無需深入研究檔案)是安排一次任務并啟動三個執行緒。
首先,您創建一個ExecutorService executorService = Executors.newFixedThreadPool(3);并將其作為靜態變數。
在您的@Scheduled方法中,您通過使用相同的底層方法呼叫executor.submit()3 次來執行 3 次處理(您在單獨的方法中提取實際處理部分)。
uj5u.com熱心網友回復:
一個好方法是使用 sprint async
@EnableAsync
public class ScheduledFixedRateExample {
@Async
@Scheduled(fixedDelayString = 3000)
public void test() throws InterruptedException {
System.out.println(Thread.currentThread().getName());
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/451296.html
