Java 从多线程返回数据与累积响应
我正在做一个简单的项目,它将发送多个HTTP请求来检索一些数据,解析每个URL的响应,并返回包含原始URL和一些数据信息的响应(线程使用的原因显然是多个HTTP请求)。Java 从多线程返回数据与累积响应,java,multithreading,concurrency,thread-safety,threadpool,Java,Multithreading,Concurrency,Thread Safety,Threadpool,我正在做一个简单的项目,它将发送多个HTTP请求来检索一些数据,解析每个URL的响应,并返回包含原始URL和一些数据信息的响应(线程使用的原因显然是多个HTTP请求)。 我想知道是否有针对这种情况的最佳实践,以下是我脑海中突然出现的选项: 1.让每个线程发送一个HTTP请求。解析数据以获取所需的信息并返回信息本身(通过Future,或在线程完成后执行的简单数据类型getInformation()调用),然后在原始线程中创建URL SomeDataType对 2.让每个线程获取同步列表/映射的附加
我想知道是否有针对这种情况的最佳实践,以下是我脑海中突然出现的选项:
1.让每个线程发送一个HTTP请求。解析数据以获取所需的信息并返回信息本身(通过
Future
,或在线程完成后执行的简单数据类型getInformation()
调用),然后在原始线程中创建URL SomeDataType对2.让每个线程获取同步列表/映射的附加参数,该线程将向其中添加URL信息对(列表/映射的同一实例将在所有线程之间共享)。
3.不太可能的选择-与解析主线程中的所有信息相比,让每个线程只提取信息,并以1/2中提到的任何一种方式返回(这将降低性能,但几乎需要0个同步处理,这很好) 类似场景是否有最佳实践?
谢谢 在我看来,选项1是最干净的,符合最佳实践。实现它的首选方法是使用executor框架(线程池和可调用项)。选择的理由-
从同步的角度来看,选项2和3是等效的。没有区别-从请求或处理的数据传输所有数据。第一种选择既复杂又缓慢。