首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单个线程中执行一些Clojure期货?

如何在单个线程中执行一些Clojure期货?
EN

Stack Overflow用户
提问于 2017-12-28 04:23:24
回答 4查看 617关注 0票数 1

我想在Clojure中创建一些未来,并在一个特定的线程上运行它们,以确保它们一次运行一个。这可能吗?

包装Java库来实现这一点并不难,但在此之前,我希望确保不会遗漏Clojure的实现方式。在Java语言中,我可以通过实现FutureTask并将这些任务提交给单线程执行器来实现这一点。

EN

Stack Overflow用户

发布于 2018-01-05 02:03:39

除了前面提到的promises之外,您还可以使用delay。Promise的问题是,你可能会意外地无法交付它们,并且会造成futuredelay无法实现的死锁情况。未来和延迟之间的区别仅仅是执行工作的线程。有了未来,工作是在后台完成的,而在延迟的情况下,工作是由试图破坏它的第一线程完成的。因此,如果未来比承诺更合适,你总是可以这样做:

代码语言:javascript
运行
复制
(def result-1 (delay (long-calculation-1)))
(def result-2 (delay (long-calculation-2)))
(def result-3 (delay (long-calculation-3)))

(defn run-calcs []
  @(future
     @result-1
     @result-2
     @result-3))
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47998199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档