第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Spring ScheduledTaskRegistrar 進行異步調(diào)度

使用 Spring ScheduledTaskRegistrar 進行異步調(diào)度

暮色呼如 2023-06-08 20:59:28
我有問題,我想在運行時創(chuàng)建一個計劃任務(wù)。計劃任務(wù)應(yīng)以固定速率觸發(fā)。但現(xiàn)在我遇到了手動設(shè)置計劃未以異步方式觸發(fā)的問題。主要問題是,我們沒有任何可以啟動調(diào)度程序的修復點。它應(yīng)該在我讀取特定值 (1) 時創(chuàng)建,并在值變回 (0) 時被銷毀。否則我們可以使用下面測試 1 中描述的注釋配置。到目前為止我嘗試了什么:1. 安排@Scheduled(fixedRate = 500L)和@Async代碼@Async@Scheduled(fixedRate = 500L)public void annotationTest() {    UUID id = UUID.randomUUID();    log.warn("Hello from Thread {} going to sleep", id);    try {        Thread.sleep(1000L);    } catch (InterruptedException e) {        e.printStackTrace();    }    log.warn("Finished Thread {}", id);}在類級別也有@EnableAsync和注釋。@EnableScheduling結(jié)果09:56:24.855 [task-5] : Hello from Thread 3b5514b2-3b80-4641-bf12-2cd320c4b6e5 going to sleep09:56:25.355 [task-6] : Hello from Thread e98514a7-e193-422b-9569-f7635deb33f8 going to sleep09:56:25.356 [task-4] : Finished Thread d86f5f24-bffb-4ddd-93fe-2334ed48cf9109:56:25.854 [task-7] : Hello from Thread cfc2ab03-4e7e-4a4a-aa08-41d696cb6df7 going to sleep09:56:25.855 [task-5] : Finished Thread 3b5514b2-3b80-4641-bf12-2cd320c4b6e509:56:26.355 [task-6] : Finished Thread e98514a7-e193-422b-9569-f7635deb33f8評論這按預期工作,但我們無法使用它,因為我們必須在運行時創(chuàng)建調(diào)度程序并在特定時間/輸入后銷毀它。2. 設(shè)置一個ScheduledTaskRegistrar代碼//@Configuration@Beanpublic ScheduledTaskRegistrar scheduledTaskRegistrar() {    ScheduledTaskRegistrar scheduledTaskRegistrar = new ScheduledTaskRegistrar();    scheduledTaskRegistrar.setScheduler(threadPoolTaskScheduler());    return scheduledTaskRegistrar;}@Beanpublic TaskScheduler threadPoolTaskScheduler() {    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();    scheduler.setPoolSize(20);    return scheduler;}//@Componentpublic void printMessages() {    scheduledTaskRegistrar.scheduleFixedRateTask(new FixedRateTask(new OwnRunnable(), 500L, 0L));}還將OwnRunnable休眠 1 秒,然后打印完成文本正如我們所見,任務(wù)以同步方式運行,不符合我們的要求。
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經(jīng)驗 獲得超4個贊

對的,這是可能的。假設(shè)您實現(xiàn) SchedulingConfigurer 的類有一個方法 doMyJob()。您可以使用 Async 注釋該方法并使用 FixedRateTask 中的引用。還要注意類級別注釋


@Configuration

@EnableAsync

public class MyJobConfig implements SchedulingConfigurer {


    @Override

    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {

        taskRegistrar.scheduleFixedRateTask(new FixedRateTask(this::doMyJob, 500L, 0L));

    }


    @Async

    public void doMyJob() {

        try {

            Thread.sleep(1000L);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

    }

}

希望能幫助到你


編輯


我提供了未經(jīng)測試的代碼。最近當我試圖重新創(chuàng)建這個場景時,我注意到如果doMyJob在SchedulingConfigurer中,它不會是真正的異步(如果延遲是 5 秒并且作業(yè)需要 10 秒,下一個作業(yè)僅在 10 秒后運行)。但是將方法移至服務(wù)類會有所幫助。


查看完整回答
反對 回復 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 310 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號