我正在开发一个需要连续测试1000个代理服务器的应用程序.该应用程序基于Spring Boot.
我正在使用的当前方法是@Async装饰的方法,该方法采用代理服务器并返回结果.
我经常收到OutOfMemory错误,处理速度很慢.我认为这是因为每个异步方法都是在一个单独的线程中执行的,该线程在I / O上受阻?
我到处都读到Java异步的知识,人们将线程中的并行执行与无阻塞IO混合在一起.在Python世界中,有一个异步库,该库在一个线程中执行I / O请求.当一个方法正在等待服务器的响应时,它开始执行其他方法.
我认为就我而言,我需要这样的东西,因为Spring的@Async不适合我.有人可以帮我消除困惑,并建议我如何应对这一挑战?
我想同时检查100个代理,而又不增加过多的负担.
我已经阅读过有关Apache Async HTTP Client的信息,但我不知道它是否合适?
这是我正在使用的线程池配置:
public Executor proxyTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(Runtime.getRuntime().availableProcessors() * 2 - 1);
executor.setMaxPoolSize(100);
executor.setDaemon(true);
return executor