В моем весеннем загрузочном проекте у меня есть асинхронный метод, аннотированный @ Async , внутри которого я создаю объект RestTemplate и вызываю другой API-интерфейс rest с ним.Теперь я также использую bean-компонент ThreadPoolTaskExecutor в своей конфигурации.Например:
@Bean
public TaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(5);
executor.initialize();
return executor;
}
И мой асинхронный метод, подобный этому:
@Async
public String asyncMethod(SomeClass object) {
//....
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Object> responseEntity = restTemplate.exchange(requestEntity, Object.class);
}
Теперь у меня есть пара вопросов по этому поводу.
1. Итак, TaskExecutor будет появляться 5темы не так ли?Значит ли это, что 5 потоков могут одновременно выполнять мой asyncMethod ()?
2. Если, скажем, я переместил свой объект RestTemplate за пределы моего асинхронного метода, создав его экземпляр как bean-компонент, чтобы он не создавался каждый раз, когда asyncMethodБудет ли это влиять на параллельное выполнение (если это одновременно), потому что, насколько я понимаю, бин является одноэлементным объектом, так как каждый раз, когда этот объект вызывается, возвращается один и тот же экземпляр?
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}