@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