作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Spring Boot 应用程序,负责通过 REST 应答请求。我还推送有关我的应用程序调用的指标。由于这是一项单独的任务,并且我必须立即响应用户,因此我希望异步发布该指标。所以我用过它:
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("MyApp-");
executor.initialize();
return executor;
但是,这个使用 SimpleAsyncTaskExecutor
并且不重用任何线程。
1) 如何使用 ConcurrentTaskExecutor
代替 SimpleAsyncTaskExecutor
?
2) 哪种实现最适合我的需求?
最佳答案
要使您的自定义执行器正常工作,请确保将其注册为 Bean,并在使用 @Async
注释的方法上引用它:
@Bean(name = "transcodingPoolTaskExecutor")
public Executor transcodingPoolTaskExecutor() {
final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("transcoder-");
executor.initialize();
return executor;
}
在持有该方法的@Service
中:
@Async("transcodingPoolTaskExecutor")
public void transcodeVideo(UUID fileId) {
mediaFileService.transcodeVideo(fileId);
}
关于java - 使用 Spring Boot 异步自定义 ThreadPoolTaskExecutor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068812/
我是一名优秀的程序员,十分优秀!