【问题标题】:Can I assume SettableFuture in quasar as a Fiber?我可以假设类星体中的 SettableFuture 作为光纤吗?
【发布时间】:2016-05-31 13:49:58
【问题描述】:

我可以假设SettableFuture 在异步代码中充当Fiber(应该假设为ForkJoinTask)吗?

Quasar SettableFuture 可以阻塞除了线程之外的光纤。

SettableFuture API
Parallel Universe Comsat Documentation

【问题讨论】:

    标签: java multithreading fiber quasar


    【解决方案1】:

    Future 不代表正在运行的代码,而是一个可以立即可用或将来可以同时可用的值(因此得名)w.r.t。持有对它的引用的线程。此外,它可以被等待,同时等待的线程将阻塞:这意味着它还充当线程同步机制。

    “可设置”future 的值不仅可以由实现类在内部生成,还可以从外部线程设置,类似于promise

    Quasar 的SettableFutures 具有额外的能力,允许所有类型的 Quasar strands(即目前的常规 Java 线程以及 Quasar 纤程)在值尚不可用时阻止它们等待它。

    这意味着您可以在任何股线(线或纤维)中创建SettableFuture,例如引用它在异步回调的代码中,它将设置其值(在执行时)但立即返回它以供更多股(线程或纤程)在等待其值时阻塞。因此,它是将异步 API 转换为阻塞(通常是高效的光纤阻塞)API 的绝佳工具。此模式也在 blog post 的“未来”小节中进行了描述。

    【讨论】:

    • 描述得很好。谢谢
    猜你喜欢
    • 2013-12-05
    • 2015-05-05
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2010-12-29
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多