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

java - ExecutorService:如何检查我的 Callable 是否正在执行?

我正在使用一个ExecutorService来处理来自多个线程的任务请求,并使用从Future返回的ExecutorService#submit()来跟踪任务的进度。

如果在超时后他们的请求还没有得到处理,我想删除请求并向请求者提供反馈。

所以我想知道当前是否正在处理任务请求,如果是,那么我将等待它完成,否则我将取消它并向请求者提供反馈。

任何帮助和提示将不胜感激。谢谢!

0 投票
1 回答
1405 浏览

timeout - Akka 中的期货超时

我们有一个服务器来处理不同参与者的投资组合和证券(在它内部)。对于证券数量较少(<20)的投资组合,这很好用。当我将安全计数增加到 1000 时,遇到以下问题:

akka.dispatch.FutureTimeoutException:期货在 [5000] 毫秒后超时

我可以通过增加akka 配置中的超时来绕过这个错误,这是正确的做法吗?在 1.2 之前的 akka 版本中,我可以在 actor 内部设置 self.timeout ,但这已被弃用。

我面临的另一个问题(间歇性地)是整个服务器在加入我的投资组合参与者中的 futures.map 代码时挂起:

0 投票
4 回答
7514 浏览

java - 可调用执行期间的异常

我有以下可调用对象:

现在我正在执行它:

我将提交存储在 hashMap 中,以便在代码中的某处执行某些操作。

如何知道worker.call()函数中是否发生异常?

submit.isCancelled()如果发生某种异常,将返回 true,如果一切正常,则返回 false?

0 投票
1 回答
313 浏览

clojure - 在不运行的情况下创建 Clojure 未来

我有一个基本的 Clojure 脚本,其中包含:

但是,如果我使用以下命令执行文件:

然后屏幕充满“正在运行”。我怎样才能改变它,以便未来在我想要的时候运行?

注意:我意识到这将永远运行,这只是我的问题的一个例子。

0 投票
3 回答
7748 浏览

concurrency - 如何使用 Guava ListenableFuture 和 Futures.chain() 方法

我有一个家庭作业,需要我学习如何使用 Guava 并发库。

在任务中,我有几个线程池,每个线程池都由一个单独的对象控制。

每个池都有几个工作线程来执行简单的任务(主要是通过使用来模拟做事Thread.sleep(long)),所有这些简单的任务都存储在一个模拟留言板的容器对象中。

每个简单任务都有一个其他任务的依赖列表,并且在所有这些任务完成之前无法执行。

如何使用ListenableFuture和的 Guava 库受益Futures.chain()

我在网上到处搜索了一些广泛的示例代码,但没有找到任何我理解如何使用的东西。

0 投票
1 回答
555 浏览

multithreading - Guava ListenableFuture 怎么可能? wait for information from a Stack?

I have a private Stack S which is filled with objects from out-side of the class (using methods). A ListenableFuture should read the stack and retrieve an Object fro

I have a private Stack S which is filled with objects from out-side of the class (using methods). A ListenableFuture should read the stack and retrieve an Object from it, but if the stack is empty it should wait for an object to be inserted to the stack and then retrieve it. I'm not sure how to implement this.

My idea was to use Wait / Notify for the ListenableFuture but is this correct logic (working with Guava)? What other options do I have?

Thanks in advance, Guy


ListenableFuture and Guava don't come into this at all. The way to do this is to implement the stack with LinkedBlockingDeque, have the method to add elements to the stack use addFirst, and use pollFirst(long, TimeUnit) to wait the specified amount of time for an object to get inserted.

Never use low-level concurrency tools like wait and notify if you can do the same job with library support.

0 投票
1 回答
971 浏览

java - newFixedThreadPool 创建的任务比需要的多

我有创建 N 个线程(例如 50 个线程)的方法。这些创建的线程使用Executors.newFixedThreadPool(20). 因此50 * 20 = 1000,在应用程序运行时可能会创建更多线程。但在实际情况下,线程数可能超过 10000 甚至更多!如何解决这个问题?我究竟做错了什么?

这是创建线程并将它们添加到 Future 列表的代码的一部分:

也许这是因为使用 Future 而发生的?或者为什么?为什么线程数失控?因此,我有内存不足的异常,线程数似乎是无限的。如果线程在池中等待,为什么要为每个线程分配这么多内存,因为我知道池中的等待线程不会使用这么多内存。

这是之前和之后的屏幕: 前 后

0 投票
1 回答
3513 浏览

jboss - JBoss 6套接字超时等待@Asynchronous方法结果

我有一个无状态的 EJB-3.1 会话 bean,其中包含一个异步方法,该方法执行一些昂贵的处理并将未来返回给客户端,从而允许它在准备好后显示处理结果:

这个 bean 在 JBoss 6 实例上运行并从 Swing 客户端远程调用:

虽然处理通常成功完成,但某些计算需要超过 300 秒才能完成。

对于这些计算,JBoss 套接字超时会导致客户端在调用 terminate.get() 时收到 ExecutionException 而不是计算结果:

不幸的是,@Asynchronous 注解没有提供任何配置选项。

我的问题是如何增加客户端服务器通信套接字超时,以及是否以任何方式可能仅用于在调用异步方法期间建立的连接。

谢谢,托马斯

0 投票
1 回答
1977 浏览

java - akka 组合多个期货列表而不会阻塞

这个问题对于熟悉 akka Futures 的人来说可能是比较基础的,所以请多多包涵。

假设我按照以下结构有一个 akka 演员层次结构:

并假设每个非 BigBoss 在 Status 包装器中都有内部状态。

如果 BigBoss 想要List<Status>来自所有后代,我可以看到这是方法:

在初始消息一直传播到 Worker 之后,我可以看到 Worker 回复 Manager:

经理将有很多这样的东西回来,并希望将它们作为期货清单放入执行人员的清单中 - 上述回复是为了回应:

上述序列首先将 Futures 转换为 a Future<List<Object>>(其中确实有状态)

所以这就是我开始有点毛茸茸的地方。

ExecutiveActor 这样做了:

所以,最后——我的问题——

  1. 在 BigBoss 最终调用 Await 之前,如何将上述内容减少Future<Future<List<Object>>到没有阻塞的情况?Future<List<Object>>

  2. 有没有办法在整个过程中保留状态类型而不是使用对象?我知道 UntypedActor 无法发送明确的类型化回复,但也许有一种更简洁的方式来表达这一点?

  3. 有没有更优雅的方法完全是我没有想到的?是我太早使用Sequence,还是根本不应该使用它?

我(显然)正在使用 Java - 并且不希望使用 TypedActors,但会喜欢所有反馈!

非常感谢您的宝贵时间-

0 投票
1 回答
1278 浏览

asynchronous - 等待异步 EJB 最多 X 秒

EJB我有一个调用 4秒的“客户端” ,Asynchronous EJB应该让它们全部运行 5 秒。Future5 秒后,“客户端”EJB 从完成运行的对象收集就绪结果,并返回输出。

我对客户端部分的“等待”有疑问。我试图调用future.get(5, TimeUnit.MILLISECONDS) 它似乎有时 async EJBs在超时后开始运行。有正确的方法吗?

1)收集Future对象Map

Future2)然后我从对象中获得超时输出

谢谢你