问题标签 [completable-future]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
49 浏览

java - 使用线程分割一个巨大的文件

我有一个包含超过 5 亿行的文本文件,其结构如下:

我正在编写一个方法,给定“lat”和“lon”它应该返回路径。我想把这个巨大的文件分成“sec0,sec1,sec2,sec3,...,secn”的部分,然后为每个部分创建线程来寻找那个“lat”和“lon”,当一个线程返回路径,其他线程将被杀死。

我的问题是,我的方法有效吗?什么是此类问题的最佳解决方案。

0 投票
0 回答
822 浏览

asynchronous - 带有 Spring Data Jpa 和 Java8 CompletableFuture 的 findAll() 中的 NonUniqueResultException

我正在尝试使我的 Jpa 存储库异步,请参阅https://github.com/spring-projects/spring-data-examples/tree/master/jpa/java8

这是我的代码:

但是当我运行我的测试时,抛出一个 NonUniqueResultException,我真的不知道为什么......这是完整的堆栈跟踪:

我不得不提到我是 Java8 的新手,也许问题只是我以错误的方式使用 CompletableFuture。但是在上面的链接中,测试是有效的,我的几乎是一样的。

提前感谢所有想法和建议!

PS:我正在使用 hibernate-entitymanager 5.0.0.Final、Spring 4.2.0.RELEASE、spring-data-jpa 1.8.2.RELEASE。

0 投票
2 回答
1667 浏览

java - 引用 CompletableFuture 中的字段,该字段可以再次是 CompletableFuture :java

我正在调用返回 CompletableFuture 的服务。

输出结构如下。

我想打电话给服务,并想继续执行我的工作,直到名字出现。

就像是,

在上述方法中,我需要等到我futureOutput的准备好,即使我以后才需要它。

我寻找类似下面的方法。

processName我可以将from的签名更改为StringtoCompletableFuture<String>但不更改CompletableFuture<Output>为 asOutput对该方法没有任何意义。

有哪些建议的方法来获得未来参考,这是另一个未来的领域。

0 投票
2 回答
2307 浏览

java - 将可完成的将来的异常映射到不同的异常类型?

我正在使用 java 8 的可完成期货,我希望能够接受未来抛出的异常并将其转换为不同的异常。

一旦发生异常,我尝试过的所有复合材料似乎都会短路。

例如,使用 scala 未来,我可以执行以下操作:

我希望能够在 java 中的未来复合块中模仿它。这可能吗?

0 投票
2 回答
434 浏览

java - java.util.concurrent.CompletableFuture#allOf 的目的是什么?

如果有Collection<CompletableFuture<MyResult>>,我希望将其转换为CompletableFuture<Collection<MyResult>>. 因此,转换后我只有一个未来,可以MyResult使用CompletableFuturelikethenApply等方法轻松地在集合上编写业务逻辑thenAccept。但是CompletableFuture#allOf有结果类型Void,所以在调用它之后我得到“没有结果”。例如,我无法从返回的未来中检索(据我了解)与Collection<CompletableFuture<MyResult>>.

我怀疑CompletableFuture#allOf只是归还 Future ,毕竟它已经完成了收集。所以我可以在循环转换中调用CompletableFuture#allOf(...).isDone然后manually (!),我的假设是否正确?Collection<CompletableFuture>CompletableFuture<Collection>

0 投票
1 回答
1312 浏览

java - 如何用spring处理CompletionStage?

如何配置 spring 以使用CompletionStage返回类型?考虑一个代码:

我得到了 404,但我在日志中看到该方法被触发。如果我这样更改签名:

我看到成功的 json 数组。

如何CompletionStage使用 spring (4.2.RELEASE) 制作作品?

更新

对于测试,我编写了以下方法:

它有效。哦

我已经测试了这个版本的未来:

有点敏捷,但是……有效!

所以我原来的方法有以下逻辑:

  1. 迭代集合
  2. 通过 AsyncRestTemplate 对每个集合元素进行异步调用
  3. 调用集合中的每个 CompletableFuture
    • thenApply(转换结果)
    • thenCompose(使用 AsyncRestTemplate 进行新的异步调用)
    • thenApply(转换结果)
    • 最后,我将转换列表调用为 Completable,如此所述。

看来未来转型是错误的。会不会是未来的连锁经营太长了?有任何想法吗?

0 投票
1 回答
1290 浏览

java - java-8 CompletableFuture 回调调用的不合理延迟

第一个回调调用非常快,其余的延迟约 50 毫秒(非附加),我不知道为什么。

输出:

编辑:其他更让我吃惊的案例。我认为 CompletableFuture 可能不是问题。

如果我添加这一行:

我得到这个输出,没有变化:

但是,如果我改为添加这一行:

延迟消失了!!

0 投票
2 回答
2609 浏览

java - 将可完成的未来列表转换为列表的一个可完成的未来

我有一个CompletableFuture实例列表。

如何将它们转换为这样的未来:

0 投票
1 回答
1039 浏览

java - 序列化 CompletableFuture 字节码

我想创建一个CompletableFuture链,将其作为字节码/参数序列化到磁盘,并在将来的某个时候再次运行它。例如:

当然,这个棘手的事情是,即使字节码存储在当前的类文件中(可以用 检索Class.getResource()),我也需要在链中设置的最终变量也被持久化。
(参见上面的 for 循环final int var = ii;

我未来的目标实际上是在具有大多数相同类文件(但不是创建链的类文件)的从属进程上运行链我会编写字节码/数据,将其重新加载到从属进程上,然后运行。

如前所述,我相信在实例化时在循环中创建的最终变量是其中的棘手部分。IE。 pos = pos.thenApply( (s)->{ return s+" plus"+val;} );

有没有人建议如何做到这一点?

0 投票
1 回答
4449 浏览

java - 带有经过时间信息的 CompletableFuture

我需要访问有关异步方法执行时间的信息。所以,我正在尝试扩展CompletableFuture功能。这是我使用装饰器模式的实现:

shouldReturnElapsedTime提取ContinuousCompletableFuture变量的第一个测试工作正常,但其他测试shouldOperateWithOwnExecutionTime失败。同时,我更喜欢在我未来的代码中看到它既不提取ContinuousCompletableFuture变量。

我认为我的问题在于错误的thenAcceptBothAsync方法使用。

有什么建议么?