问题标签 [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.
java - Java 未来和无限计算
我正在尝试优化(无限)计算算法。
我有一个无限总和要计算( Summ_{n-> infinity} (....) )我的想法是使用 Future < > 构造创建多个线程,然后将中间结果组合在一起。我的问题是我需要一定的精度。所以我需要在其他线程不断计算的同时不断计算当前结果。
我的问题是:是否存在某种结果队列,每个完成的线程都可以将其结果放入其中,而主线程可以接收这些结果,然后让计算继续或终止整个 ExecutorService?
任何帮助将不胜感激!谢谢!
java - Java多线程应用程序-如何动态取消Futures对象
我认为这是多线程 Java 应用程序的常见场景,因此我将在此处尝试对其进行描述。
在我的 Java 应用程序中,我有一个threadExecutor对象,它定义了一个包含 5 个线程的池。
sendCallables方法负责将Job列表分配给 Executor。我使用ObjectX
跟踪List。通过这种方式,如果用户想要中断/取消线程,我可以参考未来的列表。像这样的东西:
到现在为止还挺好。
现在有些情况下不需要再执行提交的任务了。
在这些情况下,取消任务的决定应该由应用程序智能/自动做出。
当用户会话过期或特定流程(与提交的任务相关)在所有作业执行之前结束时,可以在 Web 应用程序中找到此类情况的示例。
所以基本上每次我的应用程序没有意义继续执行作业时,我都需要调用 cancelFutures(referenceObj)。当应用程序需要调用它时,我必须确定每种情况。
我想知道是否有更好的方法来做到这一点。
我正在考虑在WeakHashMap中,一旦应用程序不再引用 referenceObj 就能够清理 Map 但这并不能阻止 Futures 执行,因为我仍然需要在它们上调用 .cancel() (一种与 WeakHashMap remove(Object) 方法关联的 eventHandler ?)
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()
完成才能继续,并且由于复杂的原因我不会在这里讨论,我需要在单独的线程上启动它。如果有另一种可行的方法,那很好。
java - CompletionService.take().isDone() 总是正确的?
可以安全地假设
将永远返回 true?如果是这样,为什么 take() 返回一个 Future,而不是直接返回值?如果不是,文档中使用的“已完成任务”是什么意思?
java - Future.get() 在什么情况下会抛出 ExecutionException 或 InterruptedException
我的代码片段:
我应该如何处理代码中的InterruptedException
and ExecutionException
?
在什么情况下会抛出这些异常?
java - 了解未来/线程
我第一次尝试使用期货。您可以取消工作似乎很聪明,但它没有按预期工作。在下面的示例中,只有第一个作业被取消。其余的都完成了。我误解了期货的使用吗?
输出:
c++11 - c++0x中的期货问题
我编写了一个小程序,以了解期货在 c++0x 中是如何工作的。在运行代码时,我收到类似“错误:'printEn' 未在此范围内声明”之类的错误。我无法理解问题所在..请指出我在这里做错了什么,如果可能的话,请为相同的内容编写正确的代码..
编辑 :
在运行程序时对 printFn 进行更改后,我收到一条错误消息“未找到版本‘GLIBCXX_3.4.14’(./a.out 需要)”。这说明什么?
java - java.util.concurrent.Future 不一致?
为了争论,假设我正在Future
为一个不可取消的任务实现。Java 6 API 文档说:
[
cancel()
] 返回后,后续调用isDone()
将始终返回true
。[
cancel()
]false
如果任务无法取消,则返回,通常是因为它已经正常完成
它还说:
如果此任务完成,[
isDone()
] 返回。true
但是,如果我的取消失败不是因为任务已经完成,而是因为它根本无法取消,该怎么办?有没有办法摆脱这种矛盾(除了让我无法取消的任务可以取消并完全回避它)?
scala - 如何向 forkjoinpool 添加更多线程
我最近成功地试验了 Scala 期货。我很高兴看到并行性带来的好处,但我只看到 4 个工作线程。
我一直在寻找如何将线程数增加到 11,但没有运气。我怎样才能做到这一点?
java - 如何控制“提交”Java Futures 的订单?
在此示例中,我向比较器对象提交了一些文件。一切正常,除了我注意到提交文件的顺序并不总是与返回文件的顺序相同。关于如何更好地控制它的任何建议?