@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("MyExecutor-");
executor.initialize();
return executor;
}
}
@Component
public class TestController {
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@GetMapping(path="/v1/test")
public void executeTask() {
taskExecutor.execute(() -> {
System.out.println("Task executed by " + Thread.currentThread().getName());
});
}
}