springboot @Scheduled 并行(多线程)配置

SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,默认情况下是单线程的,也就是无论同时有多少个任务需要执行,都需要排队等待某个任务完成之后才能继续下一个任务。下面两种方式可以配置为并行方式:

 

方法1:通过xml配置任务线程池,然后注册到springboot容器。

 

xml配置,命名为 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task.xsd">

	<!-- Enables the Spring Task @Scheduled programming model -->
	<task:executor id="executor" pool-size="5" />
	<task:scheduler id="scheduler" pool-size="10" />
	<task:annotation-driven executor="executor"
		scheduler="scheduler" />

</beans>

 

注册

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource("applicationContext.xml")
public class XmlImportingConfiguration {

}

 

 

方法2:继承SchedulingConfigurer类并重写其方法即可,如下

@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {
 
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(taskExecutor());
    }
 
    @Bean(destroyMethod="shutdown")
    public Executor taskExecutor() {
        return Executors.newScheduledThreadPool(100);
    }
}

 

 

最后别忘了app.java 中加入 @EnableScheduling 注解。

 

 

方法1亲测可用,源自 https://blog.csdn.net/shuist_king/article/details/69396756

方法2还未尝试过,源自 https://www.cnblogs.com/slimer/p/6222485.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值