问题标签 [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 投票
2 回答
2908 浏览

c++ - std::async - std::launch::async | std::launch::deferred

我了解std::async以下参数的作用。

  • std::launch::async
  • std::launch::deferred

但是,会发生什么std::launch::async | std::launch::deferred

0 投票
1 回答
165 浏览

java - 异步请求中的线程状态

我想知道当我进行 @async 调用并在 Future 类型字段中检索值时,线程在 spring 中会发生什么。同时线程是否空闲?

在此先感谢,冈萨。

0 投票
4 回答
41052 浏览

java - Future.cancel(boolean) 方法的实用程序

我只是在探索 java.util.concurrent 包。

我了解到“ Future ”类有一个方法boolean cancel(boolean mayInterruptIfRunning)

请附上我写的测试代码:

最初,我假设取消任务也会停止正在运行的线程的执行(不包括“OUCH”部分)。但我得到的输出如下:

在进一步阅读stackoverflow本身时,据说

  1. 'cancel' 方法只能停止 'unstarted' 作业(与方法的 api 描述相矛盾)
  2. cancel 方法只是中断正在运行的线程,然后该线程必须从 run() 方法返回

因此,我包括了 'OUCH' 部分 - 一个 while 循环检查中断;输出如下:

问题 :

如果应该编写类似于“OUCH”部分的内容来停止正在运行的线程,那么取消方法的实用程序/价值是什么。如果无法通过取消来停止线程,将 Callable 包装在 FutureTask 中有何帮助?我忽略的设计/概念/逻辑部分是什么?

0 投票
3 回答
969 浏览

scala - 使用 Akka Futures 生成并行随机数

我正在编写一个使用 Akka 2 Futures 构建的 CPU 密集型应用程序。我目前不需要演员,但我并不不愿意使用它们。

包含在期货中的一些计算必须经常调用随机生成器。我担心如果我使用经典的并发 RNG,它会成为一个瓶颈,我会失去可扩展性。

中每个线程都有一个随机生成器的最快速/最简单的方法是ExecutionContext什么?

有没有办法用不同的种子(但事先知道)初始化它们,比如重复实验?

0 投票
4 回答
13235 浏览

java - 即使任务完成,future.isDone 也会返回 false

我有棘手的情况,是否future.isDone()返回false,即使线程完成。

如果我称它为future.isDone()返回值false,则coundownLatch.await()返回 true。任何想法?另请注意,发生这种情况时 countDownLatch.await 会立即出现。

如果您在此处发现格式不可读的视图,请访问http://tinyurl.com/7j6cvep

0 投票
3 回答
7573 浏览

c# - C# async 和 Java ExecutorService 的区别

C# 有一个很酷的新特性

但这不等于

在 Java 中,您可以更灵活地选择任务将在其中运行的线程池。

等待呢?相当于只调用get

就像

C# 是否还有更多内容,或者它确实只是 Java 版本的语法糖?(我不是 C# 大师,所以我可能会遗漏一些东西)。

0 投票
2 回答
318 浏览

java - 奇怪的 Java 线程池行为 - 除非使用 Futures,否则会丢失任务

我正在创建一个线程池,因为我不需要线程的任何输出,所以我没有使用 Futures&Callables。但问题是,如果我不使用 Futures,我会看到线程池正在丢失我正在提交的任务。

这是我失去任务的代码结构-

在 Worker() 中,我在 run() 实现的第一行打印“得到工作”。

当我运行上面的代码时,“得到工作”的数量总是少于“提交的工作”。

但是,当我将代码结构更改为以下 -

然后我看到“得到工作”的次数等于“提交的工作”

这让我相信,除非我使用 Futures&Callables,否则线程池正在使用我正在提交的任务。

你以前见过这样的行为吗?有没有更好的方法来调试这个?

0 投票
1 回答
837 浏览

scala - Akka future.await 超时时不返回

我是 Akka 的新手,在 Akka 1.2 中调用 Future.await 时遇到问题。我已经创建了一些带有 OnTimeout 和 OnException 处理程序的 Futures,然后我正在等待它们完成。代码看起来像这样:

当出现异常时,异常处理程序被执行,然后我进入“Got here”行。但是,当超时时,虽然超时处理程序被执行,但我永远不会到达“到达这里”行。即使设置了 AtMost 值,await 也不会返回。

这可能是什么原因造成的?

0 投票
3 回答
5123 浏览

c++ - for 循环/for_each 的每个迭代可以并行完成吗?(C++11)

我正在迭代结构向量并单独处理每个结构。
它看起来像这样:

代码非常慢,因为 DoTask 连接到特定网站并分析 HTML。
加快速度的最佳方法是什么?
我的目标是同时分析多个 DataT。
我对线程很陌生,但std::asyncstd::future看起来很有希望。

0 投票
2 回答
1891 浏览

c++ - 用自己的版本替换 std::async 但 std::promise 应该在哪里生活?

我正在使用 vc2011,结果发现 std::async(std::launch::async, ... ) 有点错误(有时它不会产生新线程并并行运行它们,而是重用线程和一个接一个地运行任务)。当我进行昂贵的网络调用时,这太慢了。所以我想我会编写自己的异步函数。我被卡住了,std::promise 应该在哪里生活?在 1) 线程函数、2) 异步函数或 3) 调用函数中。

代码:

我似乎无法理解 std::promise 需要比 async 函数寿命更长(并且与线程一样长)的事实,因此 promise 不能作为 async func 中的局部变量存在。但是 std::promise 也不应该存在于调用者代码中,因为调用者只需要了解期货。而且我不知道如何在线程函数中实现承诺,因为异步需要在调用线程函数之前返回一个未来。我在这个问题上摸不着头脑。

有人有什么想法吗?

编辑:我在这里强调这一点,因为顶部评论有点误导。虽然允许 std::asycn 的默认值是 dererred 模式,但当显式设置 std::launch::async 的启动策略时,它必须表现得“好像”线程立即产生并运行(参见 en 中的措辞.cppreference.com/w/cpp/thread/async)。请参阅 pastebin.com/5dWCjjNY 中的示例,以了解这不是 vs20011 中所见行为的一种情况。该解决方案效果很好,并将我的实际应用程序加速了 10 倍。

编辑 2:MS 修复了这个错误。更多信息在这里:https ://connect.microsoft.com/VisualStudio/feedback/details/735731/std-async-std-launch-async-does-not-behave-as-std-thread