上一条回答中怎么给线程池附上最大线程数
时间: 2023-06-29 10:18:40 浏览: 49
非常抱歉,我漏掉了给线程池设置最大线程数的代码。以下是修改后的示例代码:
在上面的示例代码中,我们注入了一个名为taskExecutor的线程池,并使用setCorePoolSize和setMaxPoolSize方法来设置线程池的最小线程数和最大线程数。在这个例子中,我们将最小线程数设置为5,最大线程数设置为10,当线程池中的线程数达到最大线程数时,新的任务将被加入到任务队列中等待执行。
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
private ThreadPoolTaskExecutor taskExecutor;
@PostConstruct
public void init() {
taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(5);
taskExecutor.setMaxPoolSize(10);
taskExecutor.setQueueCapacity(100);
taskExecutor.initialize();
}
public void saveUser(User user) {
taskExecutor.execute(() -> userRepository.save(user));
}
}
```
需要注意的是,我们将taskExecutor的初始化代码放在了一个名为init的方法中,并使用了@PostConstruct注解来标记这个方法,这是因为Spring会在启动时自动调用带有@PostConstruct注解的方法,从而保证线程池在应用启动时就被正确初始化。