问题标签 [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 - ExecutorService:如何检查我的 Callable 是否正在执行?
我正在使用一个ExecutorService
来处理来自多个线程的任务请求,并使用从Future
返回的ExecutorService#submit()
来跟踪任务的进度。
如果在超时后他们的请求还没有得到处理,我想删除请求并向请求者提供反馈。
所以我想知道当前是否正在处理任务请求,如果是,那么我将等待它完成,否则我将取消它并向请求者提供反馈。
任何帮助和提示将不胜感激。谢谢!
timeout - Akka 中的期货超时
我们有一个服务器来处理不同参与者的投资组合和证券(在它内部)。对于证券数量较少(<20)的投资组合,这很好用。当我将安全计数增加到 1000 时,遇到以下问题:
akka.dispatch.FutureTimeoutException:期货在 [5000] 毫秒后超时
我可以通过增加akka 配置中的超时来绕过这个错误,这是正确的做法吗?在 1.2 之前的 akka 版本中,我可以在 actor 内部设置 self.timeout ,但这已被弃用。
我面临的另一个问题(间歇性地)是整个服务器在加入我的投资组合参与者中的 futures.map 代码时挂起:
java - 可调用执行期间的异常
我有以下可调用对象:
现在我正在执行它:
我将提交存储在 hashMap 中,以便在代码中的某处执行某些操作。
如何知道worker.call()
函数中是否发生异常?
submit.isCancelled()
如果发生某种异常,将返回 true,如果一切正常,则返回 false?
clojure - 在不运行的情况下创建 Clojure 未来
我有一个基本的 Clojure 脚本,其中包含:
但是,如果我使用以下命令执行文件:
然后屏幕充满“正在运行”。我怎样才能改变它,以便未来在我想要的时候运行?
注意:我意识到这将永远运行,这只是我的问题的一个例子。
concurrency - 如何使用 Guava ListenableFuture 和 Futures.chain() 方法
我有一个家庭作业,需要我学习如何使用 Guava 并发库。
在任务中,我有几个线程池,每个线程池都由一个单独的对象控制。
每个池都有几个工作线程来执行简单的任务(主要是通过使用来模拟做事Thread.sleep(long)
),所有这些简单的任务都存储在一个模拟留言板的容器对象中。
每个简单任务都有一个其他任务的依赖列表,并且在所有这些任务完成之前无法执行。
如何使用ListenableFuture
和的 Guava 库受益Futures.chain()
?
我在网上到处搜索了一些广泛的示例代码,但没有找到任何我理解如何使用的东西。
java - newFixedThreadPool 创建的任务比需要的多
我有创建 N 个线程(例如 50 个线程)的方法。这些创建的线程使用Executors.newFixedThreadPool(20)
. 因此50 * 20 = 1000
,在应用程序运行时可能会创建更多线程。但在实际情况下,线程数可能超过 10000 甚至更多!如何解决这个问题?我究竟做错了什么?
这是创建线程并将它们添加到 Future 列表的代码的一部分:
这是之前和之后的屏幕:
jboss - JBoss 6套接字超时等待@Asynchronous方法结果
我有一个无状态的 EJB-3.1 会话 bean,其中包含一个异步方法,该方法执行一些昂贵的处理并将未来返回给客户端,从而允许它在准备好后显示处理结果:
这个 bean 在 JBoss 6 实例上运行并从 Swing 客户端远程调用:
虽然处理通常成功完成,但某些计算需要超过 300 秒才能完成。
对于这些计算,JBoss 套接字超时会导致客户端在调用 terminate.get() 时收到 ExecutionException 而不是计算结果:
不幸的是,@Asynchronous 注解没有提供任何配置选项。
我的问题是如何增加客户端服务器通信套接字超时,以及是否以任何方式可能仅用于在调用异步方法期间建立的连接。
谢谢,托马斯
java - akka 组合多个期货列表而不会阻塞
这个问题对于熟悉 akka Futures 的人来说可能是比较基础的,所以请多多包涵。
假设我按照以下结构有一个 akka 演员层次结构:
并假设每个非 BigBoss 在 Status 包装器中都有内部状态。
如果 BigBoss 想要List<Status>
来自所有后代,我可以看到这是方法:
在初始消息一直传播到 Worker 之后,我可以看到 Worker 回复 Manager:
经理将有很多这样的东西回来,并希望将它们作为期货清单放入执行人员的清单中 - 上述回复是为了回应:
上述序列首先将 Futures 转换为 a Future<List<Object>>
(其中确实有状态)
所以这就是我开始有点毛茸茸的地方。
ExecutiveActor 这样做了:
所以,最后——我的问题——
在 BigBoss 最终调用 Await 之前,如何将上述内容减少
Future<Future<List<Object>>
到没有阻塞的情况?Future<List<Object>>
有没有办法在整个过程中保留状态类型而不是使用对象?我知道 UntypedActor 无法发送明确的类型化回复,但也许有一种更简洁的方式来表达这一点?
有没有更优雅的方法完全是我没有想到的?是我太早使用Sequence,还是根本不应该使用它?
我(显然)正在使用 Java - 并且不希望使用 TypedActors,但会喜欢所有反馈!
非常感谢您的宝贵时间-
asynchronous - 等待异步 EJB 最多 X 秒
EJB
我有一个调用 4秒的“客户端” ,Asynchronous
EJB
应该让它们全部运行 5 秒。Future
5 秒后,“客户端”EJB 从完成运行的对象收集就绪结果,并返回输出。
我对客户端部分的“等待”有疑问。我试图调用future.get(5, TimeUnit.MILLISECONDS)
它似乎有时 async EJB
s在超时后开始运行。有正确的方法吗?
1)收集Future
对象Map
:
Future
2)然后我从对象中获得超时输出
谢谢你