springboot-定时任务-多线程

1、配置异步线程池

import java.util.concurrent.Executor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
@EnableAsync//开启异步事件的支持
public class AsyncConfig {

	/*
	 * 此处成员变量应该使用@Value从配置中读取
	 */
	private int corePoolSize = 10;
	private int maxPoolSize = 200;
	private int queueCapacity = 10;

	@Bean
	public Executor taskExecutor() {
		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
		executor.setCorePoolSize(corePoolSize);
		executor.setMaxPoolSize(maxPoolSize);
		executor.setQueueCapacity(queueCapacity);
		executor.initialize();
		return executor;
	}

}

2、定时任务类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@EnableScheduling
public class ScheduledService {

	private Logger logger = LoggerFactory.getLogger(ScheduledService.class);

	@Scheduled(cron = "0/5 * * * * *")
	@Async
	public void scheduled() {
		logger.info("=====>>>>>使用cron  {}", System.currentTimeMillis());
	}

	@Scheduled(fixedRate = 5000)
	@Async
	public void scheduled1() {
		logger.info("=====>>>>>使用fixedRate{}", System.currentTimeMillis());
	}

	@Scheduled(fixedDelay = 5000)
	@Async
	public void scheduled2() {
		logger.info("=====>>>>>fixedDelay{}", System.currentTimeMillis());
	}
}

  

猜你喜欢

转载自www.cnblogs.com/lichangyunnianxue/p/9771517.html