问题标签 [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 回答
302 浏览

java - Java 未来和无限计算

我正在尝试优化(无限)计算算法。

我有一个无限总和要计算( Summ_{n-> infinity} (....) )我的想法是使用 Future < > 构造创建多个线程,然后将中间结果组合在一起。我的问题是我需要一定的精度。所以我需要在其他线程不断计算的同时不断计算当前结果。

我的问题是:是否存在某种结果队列,每个完成的线程都可以将其结果放入其中,而主线程可以接收这些结果,然后让计算继续或终止整个 ExecutorService?

任何帮助将不胜感激!谢谢!

0 投票
2 回答
1498 浏览

java - Java多线程应用程序-如何动态取消Futures对象

我认为这是多线程 Java 应用程序的常见场景,因此我将在此处尝试对其进行描述。

在我的 Java 应用程序中,我有一个threadExecutor对象,它定义了一个包含 5 个线程的池。

sendCallables方法负责将Job列表分配给 Executor。我使用ObjectX
跟踪List。通过这种方式,如果用户想要中断/取消线程,我可以参考未来的列表。像这样的东西:

到现在为止还挺好。

现在有些情况下不需要再执行提交的任务了
在这些情况下,取消任务的决定应该由应用程序智能/自动做出。
当用户会话过期或特定流程(与提交的任务相关)在所有作业执行之前结束时,可以在 Web 应用程序中找到此类情况的示例。

所以基本上每次我的应用程序没有意义继续执行作业时,我都需要调用 cancelFutures(referenceObj)。当应用程序需要调用它时,我必须确定每种情况。

我想知道是否有更好的方法来做到这一点。

我正在考虑在WeakHashMap中,一旦应用程序不再引用 referenceObj 就能够清理 Map 但这并不能阻止 Futures 执行,因为我仍然需要在它们上调用 .cancel() (一种与 WeakHashMap remove(Object) 方法关联的 eventHandler ?)

0 投票
4 回答
24711 浏览

java - java.util.concurrent.Future.get() 不返回

我有以下 Java 代码:

exeService的一个实例在哪里

问题是myObject.doSomething()永远不会返回,因此future.get()永远不会返回。

但是,如果我将调用替换为这样submit的调用execute

调用myObject.doSomething()确实返回。我不知道这是否重要,但它doSomething()是一种void方法。

为什么使用时doSomething()完成,使用execute时却没有submit

另外,我不需要使用Future.get(); 这似乎是最自然的方式。(我也遇到了同样的问题CountdownLatch。)关键是我需要等待doSomething()完成才能继续,并且由于复杂的原因我不会在这里讨论,我需要在单独的线程上启动它。如果有另一种可行的方法,那很好。

0 投票
2 回答
720 浏览

java - CompletionService.take().isDone() 总是正确的?

可以安全地假设

将永远返回 true?如果是这样,为什么 take() 返回一个 Future,而不是直接返回值?如果不是,文档中使用的“已完成任务”是什么意思?

0 投票
3 回答
65559 浏览

java - Future.get() 在什么情况下会抛出 ExecutionException 或 InterruptedException

我的代码片段:

我应该如何处理代码中的InterruptedExceptionand ExecutionException

在什么情况下会抛出这些异常?

0 投票
2 回答
3804 浏览

java - 了解未来/线程

我第一次尝试使用期货。您可以取消工作似乎很聪明,但它没有按预期工作。在下面的示例中,只有第一个作业被取消。其余的都完成了。我误解了期货的使用吗?

输出:

0 投票
1 回答
735 浏览

c++11 - c++0x中的期货问题

我编写了一个小程序,以了解期货在 c++0x 中是如何工作的。在运行代码时,我收到类似“错误:'printEn' 未在此范围内声明”之类的错误。我无法理解问题所在..请指出我在这里做错了什么,如果可能的话,请为相同的内容编写正确的代码..

编辑 :

在运行程序时对 printFn 进行更改后,我收到一条错误消息“未找到版本‘GLIBCXX_3.4.14’(./a.out 需要)”。这说明什么?

0 投票
1 回答
480 浏览

java - java.util.concurrent.Future 不一致?

为了争论,假设我正在Future为一个不可取消的任务实现。Java 6 API 文档说:

[ cancel()] 返回后,后续调用isDone()将始终返回true

[ cancel()]false如果任务无法取消,则返回,通常是因为它已经正常完成

它还说:

如果此任务完成,[ isDone()] 返回。true

但是,如果我的取消失败不是因为任务已经完成,而是因为它根本无法取消,该怎么办?有没有办法摆脱这种矛盾(除了让我无法取消的任务可以取消并完全回避它)?

0 投票
1 回答
507 浏览

scala - 如何向 forkjoinpool 添加更多线程

我最近成功地试验了 Scala 期货。我很高兴看到并行性带来的好处,但我只看到 4 个工作线程。

我一直在寻找如何将线程数增加到 11,但没有运气。我怎样才能做到这一点?

0 投票
2 回答
943 浏览

java - 如何控制“提交”Java Futures 的订单?

在此示例中,我向比较器对象提交了一些文件。一切正常,除了我注意到提交文件的顺序并不总是与返回文件的顺序相同。关于如何更好地控制它的任何建议?