美文网首页
spring 定时任务不能并发执行问题

spring 定时任务不能并发执行问题

作者: 激萌咖啡 | 来源:发表于2018-11-20 18:43 被阅读0次

在公司项目使用时,遇到一个问题。系统由多个定时任务运行时发现,当一个线程阻塞(此业务循环某个条件达到后结束)所有定时任务失效,最终定位原因默认定时任务由一个线程完成,所以修改项目定时任务线程数(代码如下)

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

import java.lang.reflect.Method;
import java.util.concurrent.Executors;

@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        Method[] methods = Job.class.getMethods();
        int defaultPoolSize = 3;
        int corePoolSize = 0;
        if (methods != null && methods.length > 0) {
            for (Method method : methods) {
                Scheduled annotation = method.getAnnotation(Scheduled.class);
                if (annotation != null) {
                    corePoolSize++;
                }
            }
            if (defaultPoolSize > corePoolSize)
                corePoolSize = defaultPoolSize;
        }
        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(corePoolSize));
    }
}

相关文章

网友评论

      本文标题:spring 定时任务不能并发执行问题

      本文链接:https://www.haomeiwen.com/subject/xrnxqqtx.html