这个方法是一个异步方法,处理一个list集合,第二个框中调用的也是一个异步的方法。但是最后的效果虽说是异步的,但是感觉就是一秒处理一秒处理一次。没有那种同时处理好几个的感觉。
4条回答 默认 最新
关注
仅供参考:
这段代码中,虽然使用了@Async注解将方法标记为异步执行,但是默认情况下,Spring异步执行是基于线程池实现的,且线程池的默认大小为1。因此,这段代码可能只会同时处理一个元素,而不是同时处理多个元素。为了同时处理多个元素,可以通过配置线程池的大小来增加并发处理的能力。可以在配置类中添加以下内容来设置线程池的大小为10:
@Configuration @EnableAsync public class AppConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); executor.setMaxPoolSize(10); executor.setQueueCapacity(500); executor.setThreadNamePrefix("MyExecutor-"); executor.initialize(); return executor; } }
其中,setCorePoolSize和setMaxPoolSize分别设置线程池的核心线程数和最大线程数,setQueueCapacity设置线程池队列的容量,setThreadNamePrefix设置线程名前缀,initialize方法初始化线程池。这样,就可以同时处理多个元素了。
同时,需要注意的是,增加线程池大小可能会占用更多的系统资源,因此需要根据实际情况合理设置线程池大小。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
- ¥15 BAT根据上两级文件夹重新命名文件要求BAT
- ¥30 不会,学习,有偿解答
- ¥15 SQL查询语句报错(检查)
- ¥15 此表中公式应该怎么写
- ¥15 求HI-TECH PICC 9.50 PL3安装包
- ¥15 下载ctorch报错,求解
- ¥15 如何入门学习c语言,单片机
- ¥15 idea 编辑语言的选择
- ¥15 Windows下部署Asmjit