java - 我可以将类星体中的 SettableFuture 假设为光纤吗?

标签 java multithreading fiber quasar

我是否可以假设一个 SettableFuture 充当异步代码中的 Fiber (它应该假设为一个 ForkJoinTask)?

A Quasar SettableFuture can block fibers in addition to threads.

SettableFuture API
Parallel Universe Comsat Documentation

最佳答案

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

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

类星体的SettableFuture s 具有额外的能力,允许所有类型的 Quasar 链(即目前的常规 Java 线程以及 Quasar 纤维)在值尚不可用时等待它来阻塞。

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

关于java - 我可以将类星体中的 SettableFuture 假设为光纤吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37547634/

相关文章:

java - Apache Camel ftp 消费者一次又一次地加载相同的文件

java - 始终使用 'this' 作为监视器锁是可以接受的吗?

ruby-on-rails - FiberError - 跨线程调用的纤程

fiber - 纤维有优先级吗?

ruby - 中途退出后怎么办

java - 从不同的日期字符串格式生成 INSTANT

java - 字符串作为 switch 语句

java - Mule PlaceHolder 文档有误吗?

java - 包含其他对象的对象的同步方法

c# - 在 .Net 中实现并行任务队列