@Scheduled定時任務單線程和多線程


1)@Scheduled 單個方法內部單線程執行,不會存在前一個定時任務沒完成,開啟后一個定時任務的情況

例如:方法a,a的第一遍執行中途卡主了,即使a的定時時間到了a也不會再次執行,串行

2)@Scheduled

     2.1)默認所有的@Scheduled方法由單線程調度,沒有同時執行的任務

例如:方法a和b,a的執行卡住了,即使時間到了b也不會執行,也是串行

     2.2)配置多線程任務調度

 
        

package com.gd.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

import java.util.concurrent.Executors;

/**
* 多線程執行定時任務
*/
//@Configuration
//所有的定時任務都放在一個線程池中,定時任務啟動時使用不同都線程。
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//設定一個長度10的定時任務線程池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM