当从不同线程在单个 xml 文档中同步写入时,CompletableFuture 是否值得

can CompletableFuture be worth when assyncronosly writing in a single xml document from different threads

场景:我正在编写一个 soap 网络服务客户端,我必须从网络服务响应转换为我们的内部 xml 结构。从用户角度来看的答案必须尽可能快,因为它是在线过程(根本不涉及批处理,可以根据搜索条件考虑数据量。请不要建议分页或中断更多网络调用因为这不是我问题的一部分)。 Web 服务答案非常嵌套,我的转换结果是一个非常简单的结构,列表中回答的每个项目只有两个级别:

<myroot>
 <firstelement>some info</firstelement>
 <secondelement>other info</secondelement>
 ...
 <100element>another info</100element>
</myroot>

这个问题的重点:利用 Java 8 中添加的功能将并发性用于教学目的(新功能是指 https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html)。

我知道从 n 个线程写入同一个文件需要 sincronization。从上面的示例中,我猜它显示了在转换过程之后为 100 种对象类型中的每一种回答的写作将是多么简单。重要的工作在于处理答案,这将包含很多对我们无用的字段和其他影响我们如何收集其他字段但在应用过滤后不相关的字段。

过去几周我一直在阅读大量书籍,寻找一些方法来利用 JAVA 8 个功能(例如并行流和 completeableFuture)来提高转换 Web 服务的性能关于 completeableFuture.thenCombine 并且这些示例中必须显示字符串的串联或 int 值的简单总和,然后据我判断,它们被组合在一起。我开始怀疑我是否要改正方向:在同一个地方写两个 completeFuture(例如 xml 文档)假设我将在幕后获得同步 "by grant".

CompletableFuture为了写作只对并行处理有用。整个请求到响应应该是异步的,以提高服务器效率(吞吐量)。在您的情况下,如果要写入 XML 的内容的生成量很大并且并行处理可以缩短请求时间,这将很有用。